ECMAScript6中的let和const命令

ECMAScript 6 入门

本文是阅读了阮一峰大神的《ECMAScript 6 入门》而记下的笔记,纯属学习归纳的笔记,也感谢他的开源做法,这本书讲得很细,如要阅读原文请点击此链接ECMAScript6入门----阮一峰

ECMAScript: ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准, 使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言

一、 let和const命令:
let和const都是用来申明变量的,作用和JavaScript中的var相差不多。
  1. let命令特点:
    (1) 在代码块中用let申明的变量只在该代码块中有效
    eg:
'use strict'
function getValue (){
    {
        let num1 = 1;
        var num2 = 2;
    }
    console.log('num1:' + num1); //有错,num1 is not defined,
    console.log('num2: ' + num2);
}
getValue();
//在代码块外部,只能得到num2的值,而num1会被认为没有被定义

(2) let在for循环中申明,那么就只有循环体中有效
(3) 不存在变量提升。变量应该在声明语句之后才可以使用
(4)暂时性死区:只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。“暂时性死区”也意味着typeof不再是一个百分之百安全的操作
(5)不允许重复申明。let不允许在相同作用域内,重复声明同一个变量。
(6)es6的let实际上为 JavaScript 新增了块级作用域。
(7)es6徐云块级作用域的任意嵌套。内层作用域可以定义外层作用域的同名变量。
(8)每一层都是一个单独的作用域,每一层都不可以读取每个独立的作用域中let申明的变量。
(9)块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。

typeof x; // ReferenceError
let x;

上面代码中,变量x使用let命令声明,所以在声明之前,都属于x的“死区”,只要用到该变量就会报错。因此,typeof运行时就会抛出一个ReferenceError

避免在块级作用域内声明函数,如果确实需要,也应该写成函数表达式,而不是函数声明语句。
// 块级作用域内部的函数声明语句,建议不要使用

严格模式下,函数只能声明在当前作用域的顶层。

二、const命令:
const声明一个只读的常量。一旦声明,常量的值就不能改变。
const一旦声明变量,就必须立即初始化,不能留到以后赋值。
const的作用域与let命令相同:只在声明所在的块级作用域内有效。
const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
const声明的常量,也与let一样不可重复声明。
const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了
const foo = {};

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

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

上面代码中,常量foo储存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把foo指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。

ES6申明变量的六种方式:

  1. var
  2. function
  3. let
  4. const
  5. import
  6. class

ES6顶层对象的属性:在Node中指的是global对象
在Es5之中,顶层对象的属性与全局变量是等价的。

在es6中,var、funciton命令申明的全局变量依旧是顶层对象的属性。另一方面,规定,let、const、calss命令申明的全局变量不属于顶层对象的属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值