ES6 let const块级作用域以及ES5 var声明对比
2018-03-26 10:39
309 查看
for(var i = 0; i < 10; i++) { var bar = i; } console.error(bar, i) //9,10 i是全局变量 for(var j = 0; j < 10; j++) { let _bar = j; //let 声明将变量_bar默认绑定到自己外面的{}作用域中,但是下面的var声明变量还是全局的 var bb = j; } // for(var j = 0; j < 10; j++) { // { // let _bar = j; //和上面的等价 // var bb = j; // } // } console.error(bb) //9 //console.log(_bar) 出错undefined if(true) { //隐式声明 let a = 12; } if(true) { //显式声明 { //console.log("aaaa",aaaa) 块级作用域,无法变量提升 let aaaa = 13; // console.log(xxx) const xxx = 33; var xxxx = 4; } } console.log(xxxx) { var bb = 3; } console.error(bb) //3 for(let j2 = 0; j2 < 10; j2++) { let _bar2 = j2; //let 声明将变量_bar默认绑定到自己外面的{}作用域中,但是下面的var声明变量还是全局的 var bb2 = j2; } //console.error(j2)//无法访问到j2 for循环里面用let定义了 console.log(bb2) //可以访问到 // { // let j2; // for(j2=0;j2<10;j2++){ // let _bar2 = j2;//每次迭代重新绑定 等价于上面的代码 // } //} const t = {}; //定义的变量无法改变,引用类型就行指向对象的地址,不可以再指向其它地址了。但是可以改变对象的属性 //const 和let一样同样是块级声明 //t = {}; 出错 t.a = 123; //可以改变 console.error(t) const t2 = 123; //t2 = 456;不可改变
相关文章推荐
- JS变量重复声明以及忽略var 声明的问题及其背后的原理
- ubuntu系统日志管理方以及var-log下各个日志文件的作用
- js变量的声明、作用域以及闭包
- 【Js】声明变量中var和作用域关系
- javascript 中的声明作用域范围以及指针引用的问题。
- es6中的let声明变量与es5中的var声明变量的区别,局部变量与全局变量
- javascript中不存在块级作用域,所以要小心使用在块级作用域中的函数声明所带来的作用域混乱.
- Javascript没有块级作用域(let 和var)
- 头文件作用 以及 声明与定义的区别
- linux c 一站式学习 extern关键词作用、变量的声明与定义以及extern与include的区别(都与extern有关)
- c++中的声明和定义的区别,以及关键字extern的作用
- js的链式作用域和var变量声明
- /var/lib/dpkg/info 文件夹作用以及补救方法
- 【ES6系列】let-var-function 声明和作用域问题
- c++高级---C++声明、定义、类的定义、头文件作用、头文件重复引用,不具名空间以及编译器编译链接过程
- ES 5、ES 6变量和函数声明以及作用域总结
- c/c++ (void) var语句的作用与ignore_unused的对比
- [JavaScript]使用块级作用域声明对象时要注意的一个问题
- var、let、const的区别,以及作用范围。
- 声明以及字符表述类--字母大小写的敏感性