我一直在阅读关于Principle of Least Privilege的信息,我很困惑何时使用let
与var
对比const
,特别是在功能级范围内。
我read:
在您知道需要阻止范围的地方使用
let
,并且您已经专门考虑了这些影响。但是继续使用var
来表示不容易被块作用域的变量,或者不应该是块作用域的变量。在现实世界的代码中会有一些地方,其中一些变量将被适当地限定为整个函数,对于那些变量,var
是一个更好的信号。
const
可以var
用于函数范围的变量吗?例如:
function foo() {
const a = 10;
if (a > 2) {
let b = a * 3;
console.log(b);
}
if (a > 5) {
let c = a / 2;
console.log(c);
}
console.log(a);
}
而不是:
function foo() {
var a = 10;
if (a > 2) {
let b = a * 3;
console.log(b);
}
if (a > 5) {
let c = a / 2;
console.log(c);
}
console.log(a);
}
答案 0 :(得分:1)
对于上述代码,应使用const
代替var
或let
,因为您使用变量a
输出新变量(b
& c
)并且不操纵或更改变量a
本身。换句话说,值'a'在整个条件语句中保持不变。
const
。var
,因为'let'有一个重要的范围机制,'var'没有调用块范围。
let
允许您声明范围有限的变量 使用它的块,语句或表达式。这与此不同 var关键字,它全局定义变量,或者本地定义变量 整个函数,无论块范围如何。通过 - Mozilla Docs