ES6 块级作用域

块级作用域

// (function(){})();//这个是命名空间->立刻执行函数,代码在{}中写着
// 在es6中可以可以直接使用{}
// {
//     let a = 1;
//     console.log(a);
// }
// 块级作用域写在for循环中
{
    let aLi = document.querySelectorAll("li");
    for(let i = 0;i<aLi.length;i++){
        aLi[i].onclick = function(){
            console.log(i);
        }
        // 在这里就直接可以使用i不需要和var一样还需要 索引值 才能找到他们对应的
    }
    /* {
        let i = 0;
        aLi[i].onclick = function(){
            console.log(i);
        }
    }
    {
        let i = 1;
        aLi[i].onclick = function(){
            console.log(i);
        }
    }
    {
        let i = 2;
        aLi[i].onclick = function(){
            console.log(i);
        }
    } */
}

原文地址:https://www.cnblogs.com/Afanadmin/p/12340058.html

时间: 2024-11-05 20:46:20

ES6 块级作用域的相关文章

let和ES6块级作用域

es6中的块级作用域 之前在看360的培训课程时,知道了{...}是个块级作用域,错误的认为{...}中声明的函数变量都不会被外界访问到,在看了你不知道的JS之后,发现并不是这样的.在块级作用域中使用let声明的变量外界无法访问到. eg: var foo = true; if (foo) { let bar = foo * 2; bar = something( bar ); console.log( bar ); } c onsole.log( bar ); // ReferenceErro

ES6块级作用域及新变量声明(let)

很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号"{}" 却限定不了var的作用域.用var声明的变量具有变量提升(declaration hoisting)的效果. ES6里增加了一个let,可以在{}, if, for里声明.用法同var,但作用域限定在块级,let声明的变量不存在变量提升. 示例1: 块级作用域 if function getVal(boo) {     if (boo) {         var val = '

ES6——块级作用域

前面的话 过去,javascript缺乏块级作用域,var声明时的声明提升.属性变量等行为让人困惑.ES6的新语法可以帮助我们更好地控制作用域.本文将详细介绍ES6新引入的块级作用域绑定机制.let和const声明机制及最佳实践 var声明 [变量提升] var声明会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined function getValue(condition){ if(condition){ var value = 'blue'; return value; }

ES6标准入门 第二章:块级作用域 以及 let和const命令

一.块级作用域 1.为什么需要块级作用域? ES5中只有全局作用域和函数作用域,带来很多不合理的场景. (1)内层变量可能会覆盖外层变量: var tem = new Date(); function f(){ console.log(tmp); if(false) { var tmp = "hello world"; } } f(); //undefined 变量提升导致了外层的内层的tmp变量覆盖了外层的tmp变量. (2)用来计数的循环变量泄露为全局变量: var s = &qu

ES6 之 let和const、块级作用域

let let 声明的变量只在其所在的代码块内有用 不存在变量提升 只要在会计作用域中存在let命令,它所声明的变量就绑定这个区域 不允许重复声明 ES6块级作用域 外层代码不受内存代码块的影响 ES6规定,在块级作用域之中,函数声明类似于let 允许在块级作用域内声明函数 函数声明会提升到所在块级作用域的头部 const const声明一个只读常量,一旦声明,常量的值就不能改变 只在声明所在的块级作用域内有效 const声明的常量与let命令相同,只在声明所在的块级作用域内有效 const不存

ES6入门一:块级作用域(let&amp;const)、spread展开、rest收集

let声明 const声明 块级作用域 spread/rest 一.let声明与块作用域 在ES6之前,JavaScript中的作用域基本单元就是function.现在有了let就可以创建任意块的声明,也被称为作用域块.这意味者只需要“{}”就可以创建一个作用域.不再像var声明变量那样总归属于包含函数或全局.例如: 1 var a = 2; 2 { 3 let a = 3 4 console.log(a); //3 5 } 6 console.log(a); //2 在相关的资料中看到有介绍,

es63块级作用域

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>第一种场景</title> <script type="text/javascript"> ----------------------------------------------------------------- v

ES6之块级作用域

一.前言 在ECMAScript6(以下简称ES6)之前,ECMAScript的作用域只有两种: 1.  全局作用域: 2.  函数作用域. 正是因为有这两种作用域,所以在JavaScript中出现一术语--“变量提升(hoisting)”. 如下: function func(){ console.log(test); var test = 1; }; func(); 在node环境执行上述代码,结果为: 之所以为’undefined’,原因就在于‘变量提升’,在进入func函数时,将所有通过

ES6里关于作用域的拓展:块级作用域

过去,javascript缺乏块级作用域,var声明时的声明提升.属性变量等行为让人困惑.ES6的新语法可以帮助我们更好地控制作用域. 一.var声明 1.变量提升:var声明会发生"变量提升"现象,即变量可以在声明之前使用,值为undefined function getValue(condition){ if(condition){ var value = 'blue'; return value; }else{ //此处可访问变量value,值为undefined return