所以,我想澄清一下,所以我知道我们在这里实际上在做什么。我正在了解es6中的“ const”功能,但我不确定该如何改变。
首先,如果我使用const定义变量,然后使用var为其分配新值,则整个过程将崩溃。这就是我的意思
<script>
const x = 10;
var x = 10;
// x doesn't get any value assigned
</script>
第二,如果我用var定义一个通用变量,然后再用const定义一个局部变量(我也可以用var或let来完成),那么它只能在该函数中用const定义局部变量,而在外部函数,它仍然是我用var定义的旧值。这就是我的意思
<script>
var x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
</script>
那么“ const”到底有什么真正的区别?还是我出了点问题?
答案 0 :(得分:1)
首先,如果您正在编写ES6,最好停止使用var
。只需将const
用于常量,将let
用于变量。
第一个示例崩溃是因为您正在重新定义该范围中的const
已经定义。重新定义let
变量时也会发生同样的事情。我知道var允许重新定义,但这会使代码难以阅读。
第二个示例按预期工作,因为您要在新作用域中定义常量。下面的示例也可以使用。
<script>
const x = 10;
{
const x = 2;
}
</script>
底线:您不能在同一范围内重新定义变量[let
]和常量[constants
]。
答案 1 :(得分:0)
我认为它比const / var更与范围相关。
const声明创建对值的只读引用。这并不意味着它拥有的值是不变的,只是不能重新分配变量标识符。
更多内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const