{console.log("a")console.log("b")} 不难看出:我们省略了‘function’,多写了"=>",总体代码量得到了减少,与此同时箭头函数还具备一些普通函数不具备的特点: 没有自身的this,其"/>
箭头函数是ES6新增的一个简写函数的语法方式:
function fn(){} //不能简写
let fn = function(){} //可以简写
普通函数的写法:
let fn = function(a,b){
console.log("a")
console.log("b")
}
而经由箭头函数可以做到部分简写
let fn = (a,b)=>{
console.log("a")
console.log("b")
}
不难看出:我们省略了‘function’,多写了"=>",总体代码量得到了减少,与此同时箭头函数还具备一些普通函数不具备的特点:
没有自身的this,其this由所在环境决定
<button id="btn">按钮</button>
<script>
btn.onclick = function () {
console.log(this);
} // <button id="btn"></button> 指向按钮本身
btn.onclick = () => {
console.log(this);
} //window 由于没有自身this 继承父级作用域的指向
</script>
没有自身arguments
let obj = {
fn: function () {
console.log(arguments);
}
}
obj.fn(1, 2, 3, 4, 5) //1,2,3,4,5
let obj1 = {
fn: () => {
console.log(arguments);
}
}
obj1.fn(1,2,3,4,5) //报错
当函数形参只有一个时:可省略,代码只有一句时:自动return且{}可省略
let obj = {
fn: function (a) {
console.log(a);
}
}
obj.fn(1) //1
let obj1 = {
fn: a =>
console.log(a)
}
obj1.fn(1) //1
不能用作构造函数:由于箭头函数没有自己的this值,也不能使用new关键字调用,所以不能用作构造函数。
没有prototype属性:箭头函数没有prototype属性,因此不能使用箭头函数来定义原型方法。
以上就是箭头函数的一些常见特点,不得不说,在某些场景箭头函数还是很香的。
文章为作者独立观点,不代表股票自动交易程序化数据接口观点