javascript 中常见if 或for循环的陷阱

153 阅读1分钟
if (true) { var somevar = 'value'; } console.log(somevar); //  value

for(var i=0;i<10;i++){
      
}
alert(i);//10

以上两个常见的例子在花括号以外还能输出值,说明js没有块级作用域,不像后台语言if语句或者for循环执行完后变量被销毁,使用var声明变量会被添加到当前的执行环境(全局环境)

JavaScript 的作用域完全是由函数来决定的,if、for 语句中的花括号不是独立的作用域