es6学习笔记

268 阅读1分钟

1.2

let,const和var的区别

var
var会产生变量提升的效果,
eg:
console.log(a)
var a = 12;
在a被声明之前打印也是可以输出a的值。相当于:
var a
console.log(1)
a = 12

let
let不会产生变量提升,块级作用域内有效,不能重复声明。
eg:
if(a){ let c=10 }
console.log(c) 并不能获取到c的值
const
const具有let的特性。并且声明变量为常量时一旦被声明,不能被修改;声明对象,可以修改常量对象内部属性的值,无法直接修改常量对象
const person={ name:"xxx" }
person.name="YYY"是可以修改的,而
person={age:10}会报错。
应用:
for循环:
for(var i=0;i < 5;i++){
arr[i]=function(){ return i
}
}
console.log(arr[2])
用var声明i时相当于在for循环前面声明了i,因此最后会输出5,而用let声明,尽在for的块作用域生效,因此可以输出我们预期的2。
避免污染全局变量:
let RegEXP=10
console.log(RegExp)
console.log(window.RegExp)
let声明的变量不会影响后面window的全局变量。

1.3

模板字符串

用tab上方的`反引号来包裹模板字符串,如果有变量(eg:a)的话,用${a}表示。

1.4

函数之默认值、剩余参数

函数变量可在()内直接等号赋予默认值
function(a=10,b)
也可以赋予默认方法
function(a,b=add(10))add为一个函数,10为函数实参
剩余参数:利用...加具名参数,替代arguments的功能并剔除其多余方法 let person={name:"xxx",age:"10",sex:"man"};
person.pick(person,'name','age');
function pick(obj,...keys){
let arr=[];
for(let i in obj){
arr[keys[i]]=obj[keys[i]]
}
}
对person使用pick方法,就可以打印输出包含name和age的数组。