ES6+ const运用
发布时间:2023-03-23 13:21:33 所属栏目:教程 来源:
导读:const 的使用类似于 let,不同的是 const 在声明时必须初始化一个值,而且这个值不能被改变。
const PI = ; // 定义一个圆周率常量 PI
上面的代码声明了一个常量 PI,如果声明时没有初始化值时,则会抛出异常。
const PI = ; // 定义一个圆周率常量 PI
上面的代码声明了一个常量 PI,如果声明时没有初始化值时,则会抛出异常。
const 的使用类似于 let,不同的是 const 在声明时必须初始化一个值,而且这个值不能被改变。 const PI = ; // 定义一个圆周率常量 PI 上面的代码声明了一个常量 PI,如果声明时没有初始化值时,则会抛出异常。 const PI; // Uncaught SyntaxError: Missing initializer in const declaration const 语句声明的是一个常量,并且这个常量是不能被更改的: const PI = ; // 定义一个圆周率常量 PI PI = // Uncaught TypeError: Assignment to constant variable. 这里声明了一个圆周率常量,我们知道圆周率是固定的不会被改变的,如果对 PI 重新赋值,则会抛出不能给常量分配变量的错误。 但如果使用 const 声明的变量是一个对象类型的话,我们可以改变对象里的值,这是因为 const 存的变量只是一个地址的引用,所以只要不改变引用的值,就不会报错。如下面的例子: const obj = {}; obj.a = // 12 const arr = []; arr.push(); // 12 arr = {}; // Uncaught TypeError: Assignment to constant variable. 使用 const 声明了一个对象和一个数组,然后增加对象的属性和增加数组的值都不会报错,这是因为我们没有改变 obj 和 arr 的引用。如果对 arr 进行重赋值,则会报不能给常量分配变量的错误。 在 ES6 之前是不能定义常量的,如果想定义常量的话,需要借助 ES5 中的 defineProperty 方法,这里我们写个示例: function setConst(key, value, obj) { Object.defineProperty(window, key, { get: function(){ return value; }, set: function(){ console.error('Uncaught TypeError: Assignment to constant variable'); }, }); } setConst('PI', ); console.log(PI) // 3.1415 PI = ; // Uncaught TypeError: Assignment to constant variable. 上面的代码是一个定义常量的函数,使用了 ES5 的 Object.defineProperty 方法,这个方法允许在一个对象上定义一个新的属性,具体使用详情可以参考 ES5 的相关文档说明。这里我们会在 window 对象上添加属性,也可以自己定义一个对象进行添加,可以实现局部作用域的效果。通过向 setConst 方法中传入指定的变量和值来声明一个常量,这样我们就在 ES5 中实现了常量的概念。由此可见,ES6 的 const 带来的好处。 变量还没有被声明,但是我们却可以使用这个未被声明的变量,这种情况就叫做提升,并且提升的是声明。 console.log(a); // undefined var a = 这个代码其实可以写出下面这样的方式: var a; console.log(a); // undefined a = 其实变量提升就是,把变量名统一地提升到作用域的顶部进行率先定义,这也就是变量提升。不仅变量可以被提升,函数也可以被提升,并且函数的提升要优于变量的提升,函数提升会把整个函数挪到作用域顶部。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |