ES6汇总(一)

let & const

  1. var 是函数/全局作用域,可重复赋值(可能会覆盖其他人声明的变量);let 和 const 都是块级作用域,且在同一作用域中不可重新声明。
  2. let 可重新赋值,const不可重新赋值(constant),如果是引用对象,其内部值可以改变;可用object.freeze(x)冻结对象。
  3. 之前将 var 声明的变量写入IIFE使该变量私有化,防止其污染全局变量;现在可用 let 代替 IIFE,直接写在{ }中即可,以及用let 解决 for 循环中的问题。
  4. 暂时性死区是指不能再变量初始化之前使用变量,注意x is not defined(属于Uncaught ReferenceError报错) & undefined,区分变量的创建、初始化和赋值。

箭头函数

  1. 箭头函数只有一个参数时可以不加括号;去掉大括号,把函数体写在一行,可隐式返回;箭头函数是匿名函数,可赋值给变量名,在递归或者解除事件绑定时有用。
  2. (单独的)函数在调用时,例如setTimeout()中的函数,如果不是作为对象的方法或者被bind、call 和 apply 改变 this 值,则该函数中的 this 指向是window,严格模式中是 undefined。
  3. 函数中的 this 是在函数运行时动态指定的;箭头函数 this 值是词法作用域,在定义时就规定了的,在调用时也不会被改变。
  4. 参数默认值的写法:
//旧版写法
function add(a,b) {
	a = a || 5;  //默认声明参数变量,无需再声明
	b = b || 2;
	return a + b;
}
//es6写法
function add(a=5,b=2) {
	return a + b;
}
//只传入后一个值时的写法
add(undefined,5);    //10
  1. 箭头函数不适用的场景:
  • 构造函数,创建新对象的四个步骤中,箭头函数并不能把 this 值绑定到新生成的对象上
  • 需要用this,注意can’t read property ‘xxx’ of undefined
  • 需要获取函数参数,使用argument对象
// 1构造函数不要使用
const Person = (name,age) => {  
	this.name = name;
	this.age = age;
}
var pascal = new Person = ('Pascal',22);
Person.prototype.upAge = () => {
    console.log(this)
    this.age++;
    console.log(this.age)
}
//2事件回调不要使用
const button = document.querySelector('.zoom');
//可以理解为不绑定就指向外层(window)
var x = '而此时恰恰需要把回调函数中的this绑定为button '
button.addEventListener('click',function() {
   this.classList.add('in');
   setTimeout(() => {
   	this.classList.remove('in')
   },2000)
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章