美文网首页
let 和 const命令

let 和 const命令

作者: Jason_Shu | 来源:发表于2019-01-13 22:31 被阅读0次

一. let命令

(1)不存在「变量提升」
var命令存在「变量提升」。

console.log(a);  //  undefined
var a = 1;

上面代码等价于

var a;
console.log(a);  //  undefined
a = 1;

如果使用let

console.log(a);  //  a is not defined
let a = 1;

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

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

总结:「就是在块级作用域内,使用let命令声明变量前,该变量不可使用」。

二. const命令

「const」命令声明一个只读的常量。

本质:
「const」实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
对于「简单数据类型」(Number,String,Boolean),值就保存在变量指向的那个内存地址,因此等同于常量。
而对于「复杂数据类型」(主要是指数组和对象),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。

比如:

const foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only

参考:http://es6.ruanyifeng.com/#docs/let

相关文章

  • let和const

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

  • ES6的let 和 const 命令

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

  • ES6需要记忆理解的地方

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

  • 重读 ES6(一)

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

  • js 中var contst let 之间的区别

    ECMAScript 6 新增 const 和 let 命令,用来声明变量。 那么const,let和var 在声...

  • es6常用语法(一)

    let 和 const 命令 let 命令 只在let命令所在的代码有效 let命令,用来声明变量。它的用法类似于...

  • es6总结一

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

  • ES6笔记

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

  • ECMAScript 6 入门

    1.let 和 const 命令 let 命令 基本用法 ES 6 新增了 let 命令,用来声明变量,它的用法类...

  • ES6基础入门

    变量 let 命令 const 命令 函数

网友评论

      本文标题:let 和 const命令

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