经常使用的ES6方法

 

经常使用的ES6方法html

ES6以后,新增了定义变量的两个关键字,分别是let和const。面试

let和const都可以声明块级做用域,用法和var是相似的,let的特色是不会变量提高,而是被锁在当前块中。数组

实例-1:数据结构

惟一正确的使用方法:先声明-->再访问闭包

const 声明常量,一旦声明,不可更改,并且常量必须初始化赋值。 const虽然是常量,不容许修改默认赋值,但若是定义的是对象Object,那么能够修改对象内部的属性:app

const和let的异同点 相同点:函数

  • const和let都是在当前块内有效,执行到块外会被销毁,也不存在变量提高(TDZ),不能重复声明。 

不一样点:this

  • const不能再赋值,let声明的变量能够重复赋值。 const实际上保证的,并非变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,所以等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即老是指向另外一个固定的地址),至于它指向的数据结构是否是可变的,就彻底不能控制了

块级做用域的使用场景spa

  •  除了上面提到的经常使用声明方式,咱们还能够在循环中使用,最出名的一道面试题:循环中定时器闭包的考题 在for循环中使用var声明的循环变量,会跳出循环体污染当前的函数。

 

在实际开发中,咱们选择使用var、let仍是const,取决于咱们的变量是否是须要更新,一般咱们但愿变量保证不被恶意修改,而使用大量的const。使用const声明,声明一个对象的时候,也推荐使用const,当你须要修改声明的变量值时,使用let,var能用的场景均可以使用let替代。指针

二:函数

函数的默认参数 在ES5中,咱们给函数传参数,而后在函数体内设置默认值,

在ES6中,咱们使用新的默认值写法:

3、箭头函数(=>)

 

箭头函数中this的使用跟普通函数也不同,在JavaScript的普通函数中,都会有一个本身的this值,主要分为: 

普通函数:

  •  一、函数做为全局函数被调用时,this指向全局对象
  • 二、函数做为对象中的方法被调用时,this指向该对象
  • 三、函数做为构造函数的时候,this指向构造函数new出来的新对象
  • 四、还能够经过call,apply,bind改变this的指向

 箭头函数:

  • 一、箭头函数没有this,函数内部的this来自于父级最近的非箭头函数,而且不能改变this的指向。
  • 二、箭头函数没有super
  • 三、箭头函数没有arguments
  • 四、箭头函数没有new.target绑定。
  • 五、不能使用new
  • 六、没有原型
  • 七、不支持重复的命名参数

 

箭头函数的简单理解

一、箭头函数的左边表示输入的参数,右边表示输出的结果。

 

const s = a => a

console.log(s(2)) // 2

  

 

 

二、在箭头函数中,this属于词法做用域,直接由上下文肯定,对于普通函数中指向不定的this,箭头函数中处理this无疑更加简单,以下:

 

//ES5普通函数

function Man(){

 this.age=22;

 return function(){

   this.age+1;

 }


}

var cala=new Man();


console.log(cala())//undefined  
//ES6箭头函数

function Man(){

 this.age=22;

 return () => this.age+1;

}
var cala=new Man();


console.log(cala())//23

ES6对象新增方法




合并具备相同属性的对象
相关文章
相关标签/搜索