es6 块级作用域let
在下面代码中为什么不加上let a = 2000 这句话,console.log(a) 结果是 100;而加上这句后为什么会报错a为定义。
我是在学习es6中let的知识点是遇到的。
var a = 100, b = 10;
function fun(){
if(true){
console.log(a);
let a = 2000;
}
}
fun();// 请把代码文本粘贴到下方(请勿用图片代替代码)
如果是if里面是var a =200;那么console.log(a)的结果是undefined,为什么换成let后 程序在这里报错了?
var用法存在变量提升,就是在用到变量的时候,会在作用域内找这个变量。所以在console.log(a)的时候,在全局找var a,提升之后,相当于var a ; console.log(a);
let和const都不会变量提升,就是在console.log(a)的时候,let a在后面,相当于a还未定义,所以是undefined
https://segmentfault.com/a/11...
之前看到的,ES6的用法,你可以瞅一眼。