ES6学习笔记

该博文参考ECMAScript6 入门,总结为自己的笔记以便查阅。

let 和 const 命令
1. let命令
基本用法:

let的用法类似与var, 但是let声明的变量只在它所在的代码块有效。
例如for循环中的自增变量,如果使用var来声明,那它就是全局的, 全局只有一个变量i,每一次循环, 变量i的值都会发生改变。但如果是使用let声明, 则i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,js引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。
此外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

不存在变量提升

var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined,let命令改变了这种语法行为, 它所声明的变量一定要在声明后使用,否则会报错。

暂时性死区

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

不允许重复声明

let不允许在相同作用域内,重复声明一个变量。

块级作用域

var只有全局作用域和函数作用域。没有块级作用域,这样造成的弊端:

  1. 内层变量可能会覆盖外层变量。
  2. 用来计数的循环变量泄漏为全局变量。
const

const 声明一个只读常量,一旦声明,常量的值就不能改变。声明的同时必须立即初始化,不能留到以后赋值。否则会报错。

ES6声明变量的6种方法
  1. var
  2. function
  3. let
  4. const
  5. import
  6. class
变量的结构赋值
1. 数据的解构赋值
基本用法
let a = 1;
let b = 2;
let c = 3;
let [a, b, c] = [1, 2, 3];

解构不成功,变量的值就等于undefined。

不完全解构,解构可以成功。

默认值

解构赋值允许制定默认值

let [x, foo = true] = ['a'] //x='a', foo=true
2. 对象的解构赋值
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"
3.字符串的解构赋值

字符串也可以解构赋值。

const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。

let {length: len} = 'hello';
len //5
用途
交换变量的值
let x = 1;
let y = 2;

[x, y] = [y, x];
从函数返回多个值
函数参数定义
提取JSON数据
函数参数的默认值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值