ECMAScript 2015 功能一:静态变量

发布:elantion 日期:2018-07-11 阅读:1411 评论:0

现在是2017年了,ES6在已经正式发布了一年多了,想必大家已经用上很久了。ES6介绍的文章也是有一大堆,这里只是记录一下自已的理解,加深对ES6的认识,欢迎大家阅读,共同学习。

常量

常量就是一旦赋值之后就不能修改的量,其英文叫Constant variable,所以赋值上会用const修饰符,是constant的缩写,使用方法很简单:

const val = 'test';

如果尝试修改其值就会报错:

val = 'another test';
// Uncaught TypeError: Assignment to constant variable.

要注意的是,const修饰符只限制当前变量不可修改,并不限制所赋的值,例如:

const val = {v: 'test'};
val.v = 'test again';  // 可以修改,不会报错
var = {v: 'test again'}; // 报错
// Uncaught TypeError: Assignment to constant variable.

let修饰符一样,它的作用域在大括号内,不要跟var搞混哦。

if(true){
    const a = 'a';
    var b = 'b';
}
b; // 'b'
a;  // Uncaught ReferenceError: a is not defined

Object的writable属性

如果某些原因你不能用const,Object的writable属性可以暂时替代一下,但它们是有区别的,例如下面把val变量赋值'test',并把val作为window的一个属性:

// writable为false时,val的值不能改变。
Object.defineProperty(window, 'val', {value: 'test', writable: false});

这时候你赋任何值上去都不会改变val的值:

val = 'another test';
val; // 值仍然是 test

与使用const不同的是,如果在非严格模式下它是不会报错的,相反,在严格模式('use strict')下,它会报错:Cannot assign to read only property xxx...