为什么要是使用const修饰符及其好处

什么是const和let

我们都知道使用const修饰会有一下作用。
1、描述

      此声明创建一个常量,其作用域可以是全局或本地声明的块。与var变量不同,全局常量不会变为 window 对象的属性。需要一个常数的初始化器;也就是说,您必须在声明的同一语句中指定它的值(这是有道理的,因为以后不能更改)。

       const 声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。例如,在引用内容是对象的情况下,这意味着可以改变对象的内容(例如,其参数)。

       这就希望大家了解一下什么是“暂存死区”。

这样看来它的好处就显而易见了

  1. 常量:变量命名的同时必须要付一个初始值,这样就规范了常量的数据类型,避免意义模糊的数字出现。
  2. 作用域:const命名的变量不存在 变量提升的问题,同时有自己的扩及作用域,不会提升到全局作用域,这样就防止了数据污染
  3. 数组对象:首先再说数组和对象的时候,我们要明确一点,const定义的对象无法修改的内容是,对象名称无法修改,但是里面的key和value是可以修改和添加的,只是我们无法修改 比如:下面的代码块。这样的好处就防止了我们书写导致对象被重写的忧患,防止被意外修改,增强了程序的健壮性。
  4. 提高了程序的运行效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,使得它成为一个编译期间的常量,没有了存储和读内存操作,使得它的运行效率也很高。

第三问的代码 比如:

const MY_OBJECT = {'key': 'value'};

// 重写对象和上面一样会失败
// Uncaught TypeError: Assignment to constant variable.
MY_OBJECT = {'OTHER_KEY': 'value'};

// 对象属性并不在保护的范围内
// 下面这个声明会成功执行
MY_OBJECT.key = 'otherValue'; // Use Object.freeze() to make object immutable

// 也可以用来定义数组
const MY_ARRAY = [];
// 可以向数组填充数据
MY_ARRAY.push('A'); // ["A"]
// 但是,将一个新数组赋给变量会引发错误
// Uncaught TypeError: Assignment to constant variable.
MY_ARRAY = ['B'];

总结:反正以后的项目内容建议大家都要使用const,尽量不要使用var,var使用let进行替换,非必要条件下不使用var。
这是const和let的官网MDN介绍是比较官方的内容,建议大家有时间仔细读一读真的很不错。

你可能感兴趣的:(js,ES6,面试题,前端,javascript,c++)