美文网首页
ES6 小记

ES6 小记

作者: Tiny_z | 来源:发表于2017-10-14 23:21 被阅读1次

    块级作用域

    let 声明

    1. 函数内部
    2. 块中(字符{}之间的区域)
    3. 禁止重申明: 同一作用域中不能用let重复定义已经存在的标识符。但如果当前作用域内嵌另一个作用域,便可在内嵌的作用域中用let声明同名变量
    let num = 1;
    if(true){
      let num = 2;
    }
    

    const 声明

    一般使用这个命令声明常量,值一旦被设定后就不可更改。但是当声明的是一个对象时,是可以修改内部的值的,也就是说,const声明不允许修改绑定,但是可以修改绑定的值

    全局块作用域绑定

    之前使用var声明变量时,它会创建一个新的全局变量作为全局对象(也就是window的属性),这就会造成无意中覆盖已经存在的全局属性,例如下面:

    var RegExp = 'str';
    console.log(window.RegExp)  // 'str'
    

    但是现在有了let和const,这两个命令会在全局作用域下创建一个新的绑定,但该绑定不会添加为全局对象的属性。也就是说,使用let和const不能覆盖全局变量

    let RegExp = 'str';
    console.log(RegExp) // 'str'
    console.log(window.RegExp === RegExp)   //  false
    
    const name = 'nick';
    console.log(name)  //  'nick'
    console.log("name" in window)  // false
    
    

    建议: 默认使用const,只有确实需要改变变量的值时使用let。因为大部分变量的值在初始化后不应该改变,而预料外的变量值的改变是很多bug的源头

    相关文章

      网友评论

          本文标题:ES6 小记

          本文链接:https://www.haomeiwen.com/subject/hbzfuxtx.html