打开WebStorm开发工具,新建‘test.js’文件,写代码如下:var f = function (a) { return a } console.log(f(3))
上面是传统的写法,用箭头表示为var e = (a) => a console.log(e(3))
运行上面代码,结果都是打印出3,说明箭头就是function的简写形式,小括号内是变量的形参传递。
尽管如此,箭头和function还是有区别的,如下面代码:var student1 = { name:'张三', hobby:function () { console.log('football'); }, } var student2 = { name:'李四', hobby: ()=>{ console.log('basketball'); }, } student1.hobby(); student2.hobby()
运行上述代码,都能正确返回结果footballbasketball
但是稍加改动代码,就可以看到不同之处:var student1 = { name:'张三', hobby:function () { console.log(this.name); }, } var student2 = { name:'李四', hobby: ()=>{ console.log(this.name); }, } student1.hobby(); student2.hobby();
运行上面代码,仅打印出张三的名字,这是因为function函数中识别的this对象就是当前定义的student1,而箭头识别的对象是window,浏览器窗体对象,同样的道理,箭头传递的形参也无法用arguments来获取。