const的绝对意义是什么?

时间:2019-04-21 14:15:01

标签: ecmascript-6 const

所以,我想澄清一下,所以我知道我们在这里实际上在做什么。我正在了解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”到底有什么真正的区别?还是我出了点问题?

2 个答案:

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