美文网首页
ES6新增命令:let

ES6新增命令:let

作者: 半缕阳光 | 来源:发表于2018-12-21 16:54 被阅读9次

let的介绍

let是ES6新增的命令。
作用:声明变量。
类似于:var。
与var的区别:使用let声明的变量,只在其所在的代码块内有效。

定义回顾

声明变量:可以用var,也可以不用var。
是否允许变量提升:允许。
是否允许重复声明同一个变量:允许。
变量的作用域:全局作用域、函数作用域。
在全局作用域中,无论是否使用var,定义的变量都是全局变量。
在函数作用域中,使用var定义函数局部变量,不使用var定义全局变量。
全局变量全局可用,函数局部变量在函数内可用。
代码块:用{}栝起来的代码片段。

基本语法

let声明的变量,只在其所在其所在的代码块内有效。
let不存在变量提升。
let不允许重复声明。
let不允许在函数的一级作用域内重新声明参数。
let存在的块级作用域,它声明的这个变量或“绑定”这个区域,形成“暂时性死区”,使其不再受外部影响。
就是说,一个变量,无论其在外部是否声明,只要在某个块级作用域内使用let重新声明了,那么在这个块级作用域内该变量在声明前是不可以使用的。

使用场景

for循环的计数器
let声明的循环变量i只在本轮循环有效,每一次循环的i都是一个新变量。特别的JavaScript引擎内部会记住上一轮循环的值,初始化本轮的变量i时,是在上一轮循环的基础上进行计算。
另外,for循环设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的自作用域。

代码片段

part 1:var声明变量回顾

<script type="text/javascript">
    var a = 1;
    console.log(a);  // 1
    b = 2;
    console.log(b);  // 2
    console.log(c);  //undefined
    var c = 3;
    var a = 4;
    function showA(){
        console.log(a);
        d = 5;
        console.log(d);
    }
    showA();  // 4,5
    console.log(d);  //5
    function showB(){
        console.log(b);
        var e = 6;
        console.log(e);
    }
    showB();  //2,6
    console.log(e);  //报错
</script>

part 2:let声明的变量时局部变量

<script type="text/javascript">
    {
        var a = 1;
        let b = 2;
    }
    console.log(a);  //1
    console.log(b);  //报错
</script>

part 3:for循环中使用var定义循环参数,该参数会变味全局参数

<script type="text/javascript">
    var a = [];
    for(var i = 0; i < 10; i++){
        a[i] = function(){
            console.log(i);
        }
    }
    a[6]();  //10
</script>

part 4:for循环中使用let定义循环参数,改参数是块级作用域内的参数

<script type="text/javascript">
    for(let i = 0; i < 10; i++){

    }
    console.log(i);  //报错
</script>

part 5:对比part3,用var定义循环变量

<script type="text/javascript">
    var a = [];
    for(let i = 0; i < 10; i++){
        a[i] = function(){
            console.log(i);
        }
    }
    a[6]();  // 6
</script>

part 6:for循环中,外层是一个父作用域,里面的每层循环是一个自作用域,互不影响

<script type="text/javascript">
    for(let i = 0; i < 3; i++){
        let i = 'abc';
        console.log(i);  //abc,abc,abc
    }
</script>

part 7:let声明的变量不允许变量提升

<script type="text/javascript">
    console.log(a);  //报错
    let a = 1;
</script>

part 8:块级作用域中用let声明的变量会形成【暂时性死区】,即使在全局声明了该变量,也不能在let声明前调用

<script type="text/javascript">
    let a = 1;
    console.log(a);  //1
    {
        a = 2;
        let a;
        console.log(a);  // 报错
    }
</script>

part 9:let声明的变量不允许重复声明

<script type="text/javascript">
    let a = 1;
    console.log(a);  // 1
    let a = 2;
    console.log(a);  //报错
</script>

part 10:不允许在函数的一级作用域内使用let重新声明参数

<script type="text/javascript">
    function showName(name){
        let name = 'sunny';
        console.log(name);
    }
    showName('lily');   // 报错
</script>

part 11:可以在函数的二级或三级等作用域内使用let重新声明参数,且与一级作用域中的参数互不影响

<script type="text/javascript">
    function showName(name){
        console.log(name);
        {
            let name = 'sunny';
            console.log(name);
        }
    }
    showName('lily');   //lily,sunny
</script>

相关文章

  • 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 命令

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

  • ES6详解1

    es6语法 es6新增命令 let let 类似于 var 用来声明变量 ,let 命令所在的 代码块内才生效{l...

  • let 和 const 命令

    ES6 let 命令 ES6新增了 let 命令,用于声明变量,其用法类似于varlet 命令声明的变量仅仅在其所...

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

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

  • es6个人总结

    let命令es6新增let命令,类似于var命令,但是声明的变量只是在let命令所在的代码块有效,并且let不可以...

  • ES6 学习笔记-let

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

  • 无标题文章

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

  • let与const

    let 1、ES6 新增了 let 命令,用于声明变量。其用法类似于 var ,但是所声明的变量只在 let 命令...

网友评论

      本文标题:ES6新增命令:let

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