美文网首页
被遗漏的const、let要点

被遗漏的const、let要点

作者: 芒果加奶 | 来源:发表于2018-04-26 19:56 被阅读0次

2.1 let 命令

2.1.1 基本用法

let 块级作用域

for (let i = 0; i < 3; i++) {
  let i = "abc";
  console.log(i);
}
// 打印三次abc,说明for循环变量是父作用域,循环体是单独作用域

2.1.2 不存在变量提升

先定义变量后使用

2.1.3 暂时性死区(划重点)

只要块级作用域中存在let命令,所声明的变量就绑定(binding)在区域中,不能受到外部影响

var temp = 123;
if (true) {
  temp = 122; //temp not defined
  let temp;
}

var x = x;
let y = y; //y未定义

2.1.4不允许重复声明

let 不允许在相同作用域重复生命同一个变量

2.2 块级作用域与函数声明

块级作用域允许声明函数的规则只能在大括号中成立

"use strict";
if (true) {
  function f() {}
}

if (true) 
  function f() {} //报错

2.2 const 命令

2.3.1 基本用法

const 声明一个只读的常量,一旦声明,常量值不能改变(!!!真的不能改变么,答案在本质上

const PI = 3.14
console.log(PI)

PI = 3 //TypeError: Assignment to constant variable.

一样是块级作用域,存在暂时性死区,不能重复声明。

2.3.2本质(划重点)

const 实际上保证是不是变量值不得变动而是变量指向的地址不得变动。
对于基本数据类型,值保存在变量指向的内存地址中,因此等同于常量。但是对于引用性数据(以对象和数组为主),变量保存内存地址保存的只是指针,const只能保证指针是固定的,对于指针指向的数据不能保证。

"use strict";
const obj = {};
obj.value = 123;
console.log(obj.value); //123
foo = {}; //将foo指向另一个对象,正常模式下不报错,在严格模式下报错

文章为阮大大《ES6标准入门》整理而来

相关文章

  • 被遗漏的const、let要点

    2.1 let 命令 2.1.1 基本用法 let 块级作用域 2.1.2 不存在变量提升 先定义变量后使用 2....

  • ES6常用及关键特性

    1、变量声明 let 和 const 其中let表示变量,const表示常量,const声明的变量被认为是常量,也...

  • ES6

    let const let const 没有变量提升let 块级作用域const 常量 模板语言, restfu

  • js常用方法

    let 推荐使用let,而非var,可以避免变量提升,达到块作用域效果 const const语言中的变量只能被赋...

  • let和const

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

  • 2、ES6 的六种变量声明方法

    var function let const import class let let允许你声明一个作用域被限制在...

  • ES6简单总结篇

    一、let const 特性: 1、let const 声明的变量只在他所在的代码块内有效 2、let const...

  • ES6需要记忆理解的地方

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

  • 工作中常用的 ES6 语法

    变量声明 let 和const 不用var, 用const声明只读变量,let声明变量。let和const都是块级...

  • 【JS】从ECMA学习let、const、var变量声明与声明提

    let、const、var是JS中的声明关键字 let和const 我们熟知的let和const的特性,常见的就有...

网友评论

      本文标题:被遗漏的const、let要点

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