• js var、let、const声明变量


    var声明

    var varname= 10;

    变量值可以没有,即 var varname,那么varname默认就是undefined;

    var 作用域的理解:js作用域的理解

    let声明

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

    1. 变量名不能重复

    • let 声明的变量,变量名不能重复! 而且必须先声明后使用。
    1  var a = 0;
    2     let a = 1;  // 报错 --- 标识符 'a' 已经声明
    3     console.log(a);

    VM1019:2 Uncaught SyntaxError: Identifier 'a' has already been declared

    2. 块级作用域

    • 块级作用域,相当于局部作用域。在JS中,只有函数才能创造一个局部作用域,但是在ES6中,只要是个 { } 都是块级作用域(局部作用域)。
       // 对象:
         {
             var a = 1;
             let b = 2;
         }
         console.log(a);  // a = 1    
         console.log(b);  // 报错 --- b is not defined

    3. let 声明的变量只能在当前作用域使用

    • js5 中 用 var 在 for 中声明的变量,可以再外部访问。
    • es6中 用 let 在 for 中声明的变量 ,无法在外部访问。
    • 在 js 中,全局变量可以在局部环境下使用,局部变量不能在全局下使用。
    • 在 es6 中,let 声明的变量,全局变量只能在全局使用,局部变量只能在局部使用。而且全局声明的变量与局部声明的变量没有任何关系, 变量名都可以一样。
      // 在 js 中函数创造局部环境 
        for (var i = 0; i < 10; i++) {
            var a = i;
        }
        console.log(i);     // 10
        console.log(a);     // 9
    // es6 中 用 let 在 for 中声明的变量 ,无法在外部访问。
        for (let i = 0; i < 10; i++) {
            let a = i;
        }
        console.log(i);     // i is not defined
        console.log(a);     // 没执行到

    4.暂时性死区

    在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”

    {
            console.log(a);   //undefined。
            var a = 1;        // 局部作用域
            console.log(a);//1
    }

    let 声明的变量 ,必须先声明再使用,否则报错;

    {
            console.log(a);   // 报错 --- 在初始化之前无法访问'a'     应该先声明后使用。
            let a = 1;        // 局部作用域
            console.log(a);
    }

    const关键字

    • 在ES6中用来声明静态常量。
    • 常量在声明时,所有字母必须大写, 必须赋值。
    • 一旦声明,常量的值就不能改变。
        const PI = 3.1415926;
        console.log(PI);
        PI = 0; 
        console.log(PI);    // 报错 --- 常量无法修改,  对常数变量的赋值。
        const ABC;
        console.log(ABC);   // 报错 --- 在const声明中缺少初始化  
     conset 和let在作用域上一致;区别是let定义变量,const定义常量;

    参考原文地址:https://www.jianshu.com/p/fd427a0c2c23
  • 相关阅读:
    CodeGen用户定义的扩展令牌
    CodeGen编写自定义表达式标记
    CodeGen CreateFile实用程序
    CodeGen融合核心关系循环扩展
    CodeGen融合核心扩展定制文件
    CodeGen API分析
    CodeGen字段循环Field Loop
    CodeGen概述
    算子扫描与递归核
    算子本质与数学函数
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/16595290.html
Copyright © 2020-2023  润新知