js没有块级作用域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js没有块级作用域相关的知识,希望对你有一定的参考价值。
今天看一篇介绍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高级程序设计第三版)第四章有说,块级作用域里面的变量声明会将变量添加到当前的执行环境中。
以上是关于js没有块级作用域的主要内容,如果未能解决你的问题,请参考以下文章