标签:
今天看一篇介绍ECMAscript6的博文时,看到let命令的时候突然有点蒙逼.......
let命令:let用于变量声明,与var
用法类似,但是let
是一个局部变量,只在声明的代码块中有效。
{
let a = 10; var b = 20;
}
a // not defined
b // 20
看到这我觉得这个块级作用域是函数作用域,但是块级作用域和函数作用域是不一样的,比如:
function demo(){
var a=1;
}
console.log(a);
a//not defined
这是函数作用域,外面无法访问函数内部的变量
但是
for(var i=0;i<5;i++ ){
var a=1;
}
console.log(a);
a//1
这是因为js中没有块级作用域,在书中(javascript高级程序设计第三版)第四章有说,块级作用域里面的变量声明会将变量添加到当前的执行环境中。
标签:
原文地址:http://www.cnblogs.com/Joazer/p/5251715.html