ES6 --------- const

对于es6使用的也挺频繁,但是有些东西真的使用得注意:

const使用注意:

  1. 声明的变量不能再被声明,或者改变值类型,否则将会报错.报错的信息分别是:

  • TypeError: invalid assignment to const "x" (Firefox)
  • TypeError: Assignment to constant variable. (Chrome)
  • TypeError: Redeclaration of const 'x' (IE/Edge)

  eg: 

const a = 2;
a = 3;
// 将会报上述类型错误(具体和李玉兰器有关)
const a = 3;
// Uncaught SyntaxError: Identifier 'c' has already been declared
// 重新声明也会报错,提示你c已经被声明

  2. const声明的引用类型,虽然变量不可变,但是对象内部却可以被影响,这一点如果不注意,在开发中就会很尴尬~

const a = {
  name : 'Mike'
}
a.name = 'Tom'
// 此时a的属性name的值已经改变
console.log(a)
//{name: "Tom"}

同理:数组也是(但是会存在浏览器兼容,比如firefox将不会修改数组的值,但是对象就会...很神奇...)

const a = [1,2,3]
a.shift()
console.log(a)
// [2,3] -- EDGE CHROME OPERA等浏览器
// [1,2,3] -- FIREFOX

  3. const也存在块级作用域,作用域内声明的变量可以与全局变量同名

const a = 5;
   console.log(a)
   function test(){
        const a = 3
        console.log(a)
   }
   test()

   {
       const a = 4;
       console.log(a)
   }

分别输出: 5 3 4

  总结:

    const声明的变量是唯一的(同一作用域),它声明的值类型不可变,引用类型却可以改变...

原文地址:https://www.cnblogs.com/gxlself/p/8689224.html