关于javascript:重温JavaScriptlesson2关于ES6中的const

39次阅读

共计 1326 个字符,预计需要花费 4 分钟才能阅读完成。

重温 JavaScript(lesson2): 对于 ES6 中的 const

在 lesson1 中咱们重温了 ES6 中的 let。除了 let,ES6 还多了新成员 const。

const 同样能够创立块作用域变量,然而值是固定的,也就是常量,对其值批改就会报错。

对于 const 的应用有如下注意事项:

1. 申明的时候须要赋值

const constTest;
// 报错提醒:Unexpected token 

2. 赋值之后不能再批改

const constTest = 30;
constTest = 40;
// 报错提醒:"constTest" is read-only

3. 申明的对象援用不能够扭转,然而能够批改对象的属性

const constObj = {};
constObj = {name:"New_Name"}
// 报错提醒:"constObj" is read-only

如上代码所示,应用 const 申明了 constObj 并初始化为空对象,再赋值为其余对象的时候就会报错。然而咱们能够批改为 constObj 所指向的对象减少或删除属性,这都不会报错。看代码:

const constObj = {};
constObj.name = 'New_Name';
constObj.age = 18;
delete constObj.name;
console.log(constObj)
//{age: 18}

在这里申明了 constObj 并为其初始化为一个空对象。接着,给 constObj 赋予 name 和 age 属性,而后删除 name 属性,这都是非法的操作。

当应用 const 申明数组的时候,状况相似,看代码:

const constArr = [];
constArr = [];
// 报错提醒:"constArr" is read-only
const constArr = [];
constArr.push(1);
constArr.unshift(2);
console.log(constArr)
//[2, 1]

4. 用 const 创立的变量只在块级作用域内无效

if(true) {
  const maxItems = 5;
  console.log(maxItems)//5
}
console.log(maxItems)//maxItems is not defined

代码所示,maxItesms 是在 if 语句中申明的,所以只在其内能够拜访到,而在内部无法访问。

5. 相干面试题

应用 ES5 实现 const 的性能

function _const(key, value) {    
    const desc = {        
            value,        
            writable: false    
    }    
    Object.defineProperty(window, key, desc)
}

_const('obj', {a: 1})   // 定义 obj
obj.b = 2  // 能够失常给 obj 的属性赋值
obj = {} // 报错    

这里应用了 Object.defineProperty() 办法扭转对象属性特色,该办法承受 3 个参数:具备某属性对象、属性名和属性特色的形容对象。代码应用了自定义的_const 函数将 obj 对象申明为了 const。代码参考了:https://mp.weixin.qq.com/s/ay…

好了,这就是明天咱们回顾的全部内容了。如有谬误,请不吝指正。温故而知新,欢送和我一起重温旧常识,攀登新台阶~

正文完
 0