美文网首页
ES6 let命令和const命令

ES6 let命令和const命令

作者: TryCatch菌 | 来源:发表于2019-11-04 14:27 被阅读0次

基于ES6标准入门(第3版)这本书的笔记
要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语法


let 变量

ES6中的let新增了let变量,用法和var类似,只是作用范围只在声明的代码块中有效

{
    let a = 123;
    var b = 1;
    console.log(a);
    console.log(b);
}
console.log(a);
console.log(b);

控制台会输出

123
1
1
Uncaught ReferenceError: a is not defined

可以看出let声明的变量超出代码块后会报错未定义

在for循环中使用let变量和在var变量的区别

在for循环中用var定义一个变量,然后定义方法,因为var i 定义出来是全局变量,所以控制台输出的时候一定会输出最后一轮的值,也就是5

var arr = [];
for(var i = 0; i < 5; i++){
    arr[i] = function () {
        console.log(i);
    } ;
}
arr[3]();

在for循环中用let声明的变量,var变量是局部的,每一轮都会有一个新的i,所以控制台输出的是3

var arr = [];
for(let i = 0; i < 5; i++){
    arr[i] = function () {
        console.log(i);
    } ;
}
arr[3]();

在for循环中,循环变量是父级作用域,循环体内是子作用域,如果两个循环定义了两个let变量,变量名一样,那么是互不干扰的,控制台会输出123

for(let i = 0; i < 5; i++){
    let i = '123';
    console.log(i);
}

还需要注意一点,在js中,如果用var声明的变量,在声明前使用变量,只是会报错undefined,但是如果是let声明的变量会报错ReferenceError,这里我自己测试的时候都是报错的undefined,不过正常写代码也应该是先声明后使用。

let变量使用注意事项

如果在全局声明了一个变量var temp,然后有在块中声明了一个变量let temp ,那么在声明的let temp前面对temp重新赋值,会报错ReferenceError(本地代码报错事undefined,可能是版本不一样的原因),语法上成为暂时性假死(TDZ),

  • 第一个console.log输出的是undefined
  • 第二个console.log输出的是zxc
  • 第三个console.log输出的是undefined
  • 第四个console.log输出的是cvb
var temp = 'abc';
if(true){
    console.log(temp);
    temp = 'zxc';
    console.log(temp);
    let temp;
    console.log(temp);
    temp = 'cvb';
    console.log(temp);
}

在同一个作用域内let变量不允许重复声明,这里var变量重复声明不会报错,let变量声明了后ide工具也会直接提示报错,就算忽略了代码也是不能运行的

{
    var a ='123';
    var a = '321';

    let b = 'abc';
    let b = 'cba';
}

不过如果是父级作用域嵌套同名子作用域是不会报错的

{
    let b = 'abc';
    {
        let b = 'cba'; // 不报错
    }
    
    function f(c) {
        let c; // 报错
    }
    
    function f1(c) {
        {
            let c; // 不报错
        }
    }
}

const 变量

const声明一个只读常量,一旦声明了,常量的值就不能改变了,其作用域也是在代码块里面。const 常量声明你必须马上赋值,不能只声明不赋值。和let变量一样,const变量不能重复声明。

{
    const pi = 12.5;
    pi = 1; // 报错

    const a;// 报错
    
    const b = 321;
    const b =123; // 报错
}

ES6声明变量的6种方法

es5只有两种方法声明变量,var和function,es6除了var,function还有let和const,除了这四种还有import和class,后面介绍

相关文章

  • ES6之 let 和 const 命令

    ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...

  • ES6中的let和const命令

    ES6中的let和const命令 let命令 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是...

  • ES6笔记

    let 和 const ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一...

  • ES6语法总结(一)变量的声明

    一:let和const命令 1.let命令 (1) ES6新增了let命令,用来声明变量。用法类似于var,但是声...

  • ES6 let 和 const 命令

    目录 1、let命令 2、块级作用域 3、const命令 1、let命令 ES6 新增了let命令,用来声明变量。...

  • ES6 学习笔记-let

    let 和 const 命令 1. let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于v...

  • let和const命令

    ES6学习 let和const命令 1. let命令 基本用法let命令,用来声明变量。他的用法类似于var,只在...

  • 无标题文章

    let和const命令 let命令 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • let和const命令

    es6标准入门 第2章 let和const命令 2.1 let命令 2.1.1 基本用法 let用来声明变量,但所...

网友评论

      本文标题:ES6 let命令和const命令

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