// 函数声明语句{ let a = 'secret'; function f() { return a;
}
}// 函数表达式{ let a = 'secret'; let f = function () { return a;
};
}
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
ES6环境下的let变量声明
// 函数声明语句{ let a = 'secret'; function f() { return a;
}
}
f();//secret在语句块中声明了一个变量a和一个函数f,其中变量a使用了let关键字,说明它是一个局部变量,作用域在其所在的语句块中,而函数f的作用域为全局的,在语句块的外面可以访问。又因为闭包的关系,函数f使用到的变量指向let a。
这个和如下代码是不同的
{
let a = 'secret';
}function f() {
return a;
}f();//Uncaught ReferenceError: a对于下面的代码:
// 函数表达式{ let a = 'secret'; let f = function () { return a;
};
}
f();//Uncaught ReferenceError: f在语句块中声明了变量a和函数f,在语句块的外面不能访问函数变量f
// 函数表达式{ let a = 'secret'; let f = function () { return a;
};
f()://secret}添加回答
举报
0/150
提交
取消
