1、箭头函数的使用
箭头函数有两种格式, 一种只包含一个表达式,没有{…} 和 return
一种包含多条语句, 这个时候{} return 就不能省略
箭头函数类型 |
代码 |
没有参数 |
() => 100 function(){ return 10} |
一个参数 |
x => x+1 function(x){ return x + 1} |
多个参数 |
(x, y) => x + y function(x, y) { return x + y} |
可变参数 |
(x, y, …rest) =>{ var i,sum = x+y; return sum; } |
一个表达式 |
x => x+1 |
多个表达式 |
x => { if (x>0){ return x*x }else{ return x } } |
返回一个对象 |
x => ({foo:x}) |
2、箭头函数的this
箭头函数中的this是词法作用域, 由上下文确定
词法作用域就是定义在词法阶段的作用域,无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由函数被声明时所处的位置决定
[注意]词法作用域查找只会查找一级标识符,如果代码引用了foo.bar.baz,词法作用域查找只会试图查找foo标识符,找到这个变量后,对象属性访问规则分别接管对bar和baz属性的访问
作用域查找从运行时所处的最内部作用域开始,逐级向外或者说向上进行,直到遇见第一个匹配的标识符为止
在多层的嵌套作用域中可以定义同名的标识符,这叫作“遮蔽效应”,内部的标识符“遮蔽”了外部的标识符
全局变量会自动为全局对象的属性,因此可以不直接通过全局对象的词法名称,而是间接地通过对全局对象属性的引用来对其进行访问。过这种技术可以访问那些被同名变量所遮蔽的全局变量。但非全局的变量如果被遮蔽了,无论如何都无法被访问到
参考博客:https://www.cnblogs.com/xiaohuochai/p/5700095.html