zoukankan      html  css  js  c++  java
  • let 和 const 命令

    ES6 声明变量的六种方法

    ES5 只有两种声明变量的方法:var命令和function命令。ES6除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有6种声明变量的方法。

    let 命令

    ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
    

    使用

    1. for循环使用 (不会产生全局变量 )

    2. 不存在变量提升
      存在暂时性死区问题形式

      1. 提前声明
           //会报异常不会报未定义
             typeof x; // ReferenceError
             typeof y; // "undefined"
      
      1. 参数声明
      function bar(x = y, y = 2) {
             return [x, y];
               }
             bar(); // 报错
          function bar(x = 2, y = x) {
                return [x, y];
              }
            bar(); // [2, 2]
      
      1. 定义声明
      // 不报错
                 var x = x;
                 // 报错
                 let x = x;
                 // ReferenceError: x is not defined
      

    不允许重复声明

    let不允许在相同作用域内,重复声明同一个变量。

    Const 命令

    const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。

    关于使用

    1. const声明一个只读的常量。一旦声明,常量的值就不能改变。
    2. const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
    3. const声明的常量,也与let一样不可重复声明。

    块级作用域

    作用

    1. 防止内层变量可能会覆盖外层变量。
    2. 用来计数的循环变量泄露为全局变量。

    块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。

    // IIFE 写法
    (function () {
      var tmp = ...;
      ...
    }());
    // 块级作用域写法
    {
      let tmp = ...;
      ...
    }
    

    块级作用域与函数声明

    ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。

    顶层对象的属性

    顶层对象,在浏览器环境指的是window对象,在Node指的是global对象。ES5之中,顶层对象的属性与全局变量是等价的。

    var a = 1;
    // 如果在Node的REPL环境,可以写成global.a
    // 或者采用通用方法,写成this.a
    window.a // 1
    let b = 1;
    window.b // undefined
    

    global 对象

    获取全局对象的方法

    // 方法一
    (typeof window !== 'undefined'
       ? window
       : (typeof process === 'object' &&
          typeof require === 'function' &&
          typeof global === 'object')
         ? global
         : this);
    // 方法二
    var getGlobal = function () {
      if (typeof self !== 'undefined') { return self; }
      if (typeof window !== 'undefined') { return window; }
      if (typeof global !== 'undefined') { return global; }
      throw new Error('unable to locate global object');
    };
  • 相关阅读:
    Python学习小目录汇总
    进制转换的知识
    计算机组成原理目录
    python基础知识-8-三元和一行代码(推导式)
    python基础知识-7-内存、深浅、文件操作
    IT工具使用
    Python基础知识-06-集合内存布尔False
    Python基础知识-05-数据类型总结字典
    elk收集tomcat日志
    pycharm重命名文件
  • 原文地址:https://www.cnblogs.com/95CC/p/7405854.html
Copyright © 2011-2022 走看看