【前端工程师手册】JavaScript作用域拾遗
【前端工程师手册】JavaScript作用域拾遗 昨天总结了一些作用域的知识【前端工程师手册】JavaScript之作用域,但是发表完发现忘记了一些东西,今天拾个遗。 昨天说到了JavaScript中没有块级作用域,其实在es6中是有的。 es6中的块级作用域 先举个栗子: var foo = true; if (foo) { let bar = foo * 2; bar = something( bar ); console.log(bar); } console.log( bar ); // ReferenceError 这个是let最直观的作用,在一对大括号中创建了块级作用域,bar会在大括号中的代码执行完毕后销毁。 再举个栗子: for(var i = 1;i <= 5;i++) { setTimeout(function() { console.log(i) }, i*1000) } // 每隔一秒打印一个6,共打印5次 如果说这段代码的初衷是间隔1秒打印出1、2、3、4、5的话,结果是令人大跌眼镜的,真正的结果是每隔1秒打印一次6,打印5次. 为什么会这样子?首先是因...