繁体   English   中英

函数范围变量的常量而不是var?

[英]Const instead of var for function-scoped variables?

我一直在阅读有关“最小特权原则”的信息,对于何时使用let vs. var vs. const感到困惑,尤其是在功能级范围内。

读到

在您知道需要块定义范围的地方使用let ,并且您已经特别考虑了这些含义。 但是,对于无法轻松进行块作用域定义或不应该被块作用域定义的变量,请继续使用var 在现实世界的代码中,某些变量将被适当地限定在整个函数中,而对于那些变量, var是一个更好的信号。

可以将var用作函数范围变量的const吗? 例如:

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);
}

对于上面的代码,应该使用const而不是varlet因为您使用变量a来输出新变量bc ),而不是操纵或更改变量a本身。 因此,换句话说,值“ a”在整个条件语句中保持不变。

  • const:如果根本不需要更改变量的值,请使用const
  • 设:如果以后需要更改变量的值,请使用'let'。
  • Var:避免使用var因为'let'具有重要的作用域机制,而'var'没有所谓的block-scoping

let允许您声明范围仅限于使用它的块,语句或表达式的变量。 这与var关键字不同,该关键字在全局范围内或在整个函数本地定义变量,而不管块范围如何。

通过-Mozilla Docs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM