我理解let
&的阻止与功能范围。 var
(或者我以为我做过)。最近我遇到了一些在函数范围内使用let
的JavaScript,我认为它等同于使用var
,如:
function xyz ( abc ) {
let mno = abc - 1; /* or whatever */
...
}
它与使用var
之间是否有任何功能差异?或者它只是一种风格的东西?
答案 0 :(得分:4)
如果您在定义之前尝试引用let
,则函数范围内的一个区别是temporal dead zone会发生:
function example() {
console.log(a); // undefined
console.log(b); // ReferenceError: b is not defined
var a = 1;
let b = 2;
}
答案 1 :(得分:3)
无论如何都没有区别。它既可以是风格,也可能是对var
和let
工作方式的误解。也许原始作者(编写您看到的函数的人)认为let
与const
相同(languages like Swift中几乎的情况) 。换句话说,有时人们会将样式/语法从一种语言带到另一种语言,因为声明看起来很相似,但实际上意味着完全不同的东西。
不要担心,你这样做。正如您所指出的那样,我理解let& amp;的块与函数范围。 var(或者我以为我做过)
let
用于块区域划分。
答案 2 :(得分:0)
根据this answer,您描述的情况没有区别,它们在功能范围内的功能相同。正如你猜测的那样,可能只是想要在定义变量时保持一致的人(或者linter)。