es6箭头函数

record => !!record;

看到一个地方有这种箭头函数写法,这个作用是什么??
输入自己,返回自己?= =

阅读 4k
5 个回答

定义了一个匿名函数,参数是record 返回这个参数的布尔值对象

  let a = 10;
  console.log((record => !!record)(a));//true

布尔值为false的就被剔除了

  let a = [1, '喵', 3,null,5,undefined];
  let result = a.filter(record => !!record);
  console.log(result);

注:这里的record的实参就是数组a的每一项元素传入进去- -

1.record为输入参数,!! 则是对当前参数record进行(隐式或者显示)转换为Boolean类型,最后输出的结果为true或者false;
2.我们最常见的写法,例如:!0 等于true;0本身转换为Boolean是false,!是对当前结果取反;那么!!即为在当前取反的结果上继续取反;

a.filter(record => !!record)

等同于

var result = a.filter(function(record){
    return !!record;
})

a 是不会变的,结果要看 result

这是ES6的语法糖 等于 function record (record) {

return !!record;

}

等同

function(record){
    return !!record; //两次取反运算,等于将其转为对应的布尔值
}

箭头函数除了有更简短的书写函数外
还有对 this词法解析

function Test() {
  var self = this; 
  
  setTimeout(function() {
    console.log(self.a);
  }, 1000);
}

// 箭头函数
function Test() {
  setTimeout(() => {
    console.log(this.a); //this的指向是根据外层作用域决定的
  }, 1000);
}

//test
var obj = {
    test:Test
}
obj.a = 0;
obj.test();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题