美文网首页
2018-10-18

2018-10-18

作者: 招摇YY | 来源:发表于2018-10-18 18:55 被阅读0次

    ECMAScript和JavaScript关系:

    ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。
    ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加let和const命令,import命令和class命令。ES6 一共有 6 种声明变量的方法。

    let命令

    1. ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
    {
      let a = 10;
      var  b = 5;
      a //10
    }
    a //a is not define
    b //5
    
    2. let命令不存在变量提升
    // var 的情况
    console.log(foo); // 输出undefined
    var foo = 2;
    // let 的情况
    console.log(bar); // 报错ReferenceError
    let bar = 2;
    
    3. 暂时性死区(TDZ):在let命令声明变量tmp之前,都属于变量tmp的“死区”。
    if (true) {
      // TDZ开始
      tmp = 'abc'; // ReferenceError
      console.log(tmp); // ReferenceError
      let tmp; // TDZ结束
      console.log(tmp); // undefined
      tmp = 123;
      console.log(tmp); // 123
    }
    
    4. let不允许在相同作用域内,重复声明同一个变量。
    function func(arg) {
      let arg; // 报错
    }
    
    function func(arg) {
      {
        let arg; // 不报错
      }}
    

    const命令

    声明一个只读的常量,一旦声明,常量的值不能改变。
    const的作用域与let命令相同,只在声明所在的块级作用域内有效。
    用法同let命令相似。

    块级作用域

    JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ES6中新增了块级作用域。
    块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。

    var、let、const区别

    1. var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
    2. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
    3. const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

    相关文章

      网友评论

          本文标题:2018-10-18

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