为什么要在JavaScript中使用功能范围?

时间:2016-01-25 02:24:18

标签: javascript scope

我理解let&的阻止与功能范围。 var(或者我以为我做过)。最近我遇到了一些在函数范围内使用let的JavaScript,我认为它等同于使用var,如:

function xyz ( abc ) {
    let mno = abc - 1;   /* or whatever */
    ...
}

它与使用var之间是否有任何功能差异?或者它只是一种风格的东西?

3 个答案:

答案 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)

无论如何都没有区别。它既可以是风格,也可能是对varlet工作方式的误解。也许原始作者(编写您看到的函数的人)认为letconst相同(languages like Swift几乎的情况) 。换句话说,有时人们会将样式/语法从一种语言带到另一种语言,因为声明看起来很相似,但实际上意味着完全不同的东西。

  

我理解let& amp;的块与函数范围。 var(或者我以为我做过)

不要担心,你这样做。正如您所指出的那样,let用于块区域划分。

答案 2 :(得分:0)

根据this answer,您描述的情况没有区别,它们在功能范围内的功能相同。正如你猜测的那样,可能只是想要在定义变量时保持一致的人(或者linter)。