Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js中箭头函数的一些理想用途是什么?_Javascript - Fatal编程技术网

Javascript js中箭头函数的一些理想用途是什么?

Javascript js中箭头函数的一些理想用途是什么?,javascript,Javascript,js中箭头函数的一些理想用途是什么 我以前在代码中见过这些,我喜欢这样的事实,它们似乎提供了编写更简洁的代码的能力。上面的url似乎表明箭头函数存在一些约束 那么在js中箭头函数的一些理想用途是什么呢?作为在我的js中实现它们的第一步,我想确定最强大的示例。此外,开发人员是否曾使用其他名称来引用“箭头函数” 更新 这似乎是一个很好的例子: //ES5 var multiply = function(x,y) { return x * y; } //ES6 var multiply =

js中箭头函数的一些理想用途是什么

我以前在代码中见过这些,我喜欢这样的事实,它们似乎提供了编写更简洁的代码的能力。上面的url似乎表明箭头函数存在一些约束

那么在js中箭头函数的一些理想用途是什么呢?作为在我的js中实现它们的第一步,我想确定最强大的示例。此外,开发人员是否曾使用其他名称来引用“箭头函数”

更新

这似乎是一个很好的例子:

//ES5
var multiply = function(x,y)
{
   return x * y;
}

//ES6
var multiply = (x,y) => {return x * y};
然而,使用这种方法,您似乎失去了重用,因为您正在内联实现函数。此外,如果函数更复杂,您可能希望将逻辑放在它自己的函数中

var a=()=>2;
console.log(a())//return 2
因此,基于上面的例子,我仍然没有看到使用函数指针会有好处的场景。在过去,我似乎见过一些Jasmine js单元测试使用的函数指针,但我不记得上下文


基于以上评估,您能否提供使用箭头功能的可靠理由?我想知道我是否看到箭头函数主要用于b/c这是一个新特性或语法糖

您可以将箭头函数主要用作回调函数

var arrayItems=[1,2,3];
arrayItems.map(item=>console.log(item))
从函数中容易地返回某物

var a=()=>2;
console.log(a())//return 2
最重要的是绑定这个执行上下文

箭头函数不创建自己的this,而是使用封闭执行上下文的this值

无箭头功能

function Person() {
  var that = this;
  that.age = 0;

  setInterval(function growUp() {
   // The callback refers to the `that` variable of which
   // the value is the expected object.
   that.age++;
  }, 1000);
}

var p = new Person();
 function Person(){
   this.age = 0;

   setInterval(() => {
     this.age++; // |this| properly refers to the person object
   }, 1000);
 }

var p = new Person();
带箭头功能

function Person() {
  var that = this;
  that.age = 0;

  setInterval(function growUp() {
   // The callback refers to the `that` variable of which
   // the value is the expected object.
   that.age++;
  }, 1000);
}

var p = new Person();
 function Person(){
   this.age = 0;

   setInterval(() => {
     this.age++; // |this| properly refers to the person object
   }, 1000);
 }

var p = new Person();

很好的问题,从个人使用来看,我喜欢使用箭头函数替换经典回调函数,因为它将保留父作用域的“this”,而不是创建一个新的作用域

不再

var self = this;
self.boy = "tom";

$get().then(function(){
   console.log(self.boy) //tom
})
反而

$get().then(() => {
   console.log(this.boy) //tom
})

Arrow函数保留了父级的
this
,因此每当您需要大量使用父级的this时,您可能会使用Arrow函数。我并不认为箭头函数是产生更简洁代码的一种方式,而是因为它们中使用的
this
与使用默认函数声明的vanilla js中的
不同。这里有具体的技术问题吗?这似乎更像是一个讨论主题,而不是一个问题,这不是“理想用途”的媒介。老实说,它归结为在实现时有意义的东西,正如MDN在第二句话中所说:“这些函数表达式最适合非方法函数,它们不能用作构造函数。”