let与const命令

作者: 肆意木 | 来源:发表于2017-03-12 16:12 被阅读21次

<h3>块级作用域——let 声明变量</h3>
let和var相同的地方是都可以声明变量,只是声明的范围不一样,let声明的变量只在let所在的代码块内有效。
<h3>举栗子</h3>

function test1() {

    for (let i = 0; i < 4; i++) {

        let i = 2;
        console.log(i);
    }
}

test1();

猜猜这段代码运行的结果是什么,让我们拭目以待:

let.png

是连续四次输出for语句定义的变量,这充分证明了let定义的变量只在当前模块有效。

function test2() {

    for (var i = 0; i < 4; i++) {

        var i = 3;
        console.log(i);
    }
}

test2();

作为对比来试试var定义的变量:

var.png

<h4>let 与var定义变量的区别</h4>
1.let不允许变量提升。

console.log(b);
var b = 4;
console.log(a);
let a = 3;

结果显示let报错,var没有报错。


let.png

2.暂时性死区
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

function test() {
    var a, b;
    let c, d;
    if (true) {
        a = 1;
        var a;
        console.log(a)
    }
    if (true) {
        b = 1;
        console.log(b)
    }
    if (true) {
        d = 1;
        console.log(d)
    }
    if (true) {
        c = 1;
        let c;
        console.log(c)
    }
}
test();

结果显示:


let.png

3.不允许重复声明

function test1() {
    var a = 10;
    var a = 12;
    console.log(a)
    let b = 1;
    let b = 3;
    console.log(a)
}
test1()

结果:

let.png

a不报错只有b报错。
<h3>块级作用域——const声明常量</h3>


const

const如果只声明不赋值是报错的。并且赋值之后不可变。
内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。
如下可以对数组进行push操作。

function test2() {
    const a=[];
    a.push(1);
    console.log(a)
}
test2()
const.png

相关文章

  • 重读 ES6(一)

    一、let 和 const 命令 let 命令 let 与 var 的区别:let 声明的变量只在 let 命令所...

  • ES6的let 和 const 命令

    let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...

  • let和const

    新的赋值语句let和const let和const命令

  • let 和 const 命令

    let命令,const命令 块级作用域,顶层对象的属性,globalThis对象 let命令式用来声明变量,用法与...

  • ES6 let和const命令

    let和const命令 let let命令与var类似,但是所声明的的变量只能在let所在的代码块内有效,let不...

  • ES6基础入门

    变量 let 命令 const 命令 函数

  • ES6需要记忆理解的地方

    let和const命令 1、let和const均无变量提升。2、let变量指向的地址可变,const指向的地址不可...

  • let与const命令

    块级作用域——let 声明变量 let和var相同的地方是都可以声明变量,只是声明的范围不一样,let声明的变量只...

  • 第1章 let和const命令

    基本用法 es6新增了let和const命令。let用于声明变量,用法与var类似,不过let命令声明的变量只作用...

  • ES6

    1 let 与const ①let 不存在变量提升,var 会变量提升:let 声明的变量只在 let 命令所在的...

网友评论

本文标题:let与const命令

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