具有赋值ES6的箭头函数语法

时间:2017-08-01 13:32:59

标签: javascript angularjs typescript ecmascript-6

快速提问,我是es6语法和typscript的新手,我刚刚在当前的ng2项目中找到了这段代码:

this.contextActions.getCurrentContextAction().subscribe((link) => this.currentAction = link);

要明白我是否理解正确。

函数subscribe将一个带参数(链接)的函数作为参数,并将输入参数分配给当前操作,并返回该分配的结果?

我的理解是否正确? 这个箭头函数返回的实际内容是什么?这个结果是什么? 分配不会返回任何内容吗?

请把它告诉我。

由于

5 个答案:

答案 0 :(得分:2)

  

我的理解是否正确?这个箭头函数返回的实际内容是什么?分配结果?

是。它可能并不重要,具体取决于调用它的代码与返回值的作用。

  

分配不会返回任何内容吗?

评估为指定值。

var bar, foo;
foo = (bar = 1);
console.log("Foo is " + foo);

答案 1 :(得分:1)

  

作业不会返回任何内容吗?

错误,作业的值是指定的值:



var a;
console.log(a = 5);




这就是为什么你可以做这样的事情:



var a, b, c;
console.log(a = b = c = 5); // all have the value 5




因此箭头函数返回其参数link。我不知道subscribe函数是否对返回的值做了什么。大概不是。

您理解的其余部分是正确的。

答案 2 :(得分:1)

这实际上与:

相同
var _this = this;
this.contextActions
  .getCurrentContextAction()
  .subscribe(function(link) { 
    return _this.currentAction = link
  });

Subscribe接受一个函数,它接受一个参数(链接),该参数将在某个阶段由subscribe内部调用。

在此上下文中,link是一个内部生成的变量,它被赋予您作为输入传入的函数。您也可以执行以下操作:

function myFunction(link) { 
  return _this.currentAction = link
}

var _this = this;
this.contextActions
  .getCurrentContextAction()
  .subscribe(myFunction);

箭头功能会将给予回调的值分配给this.currentAction,然后在单个语句中返回值

E.g:

var a, b, c;

console.log(a = 5); // Logs out 5

function test() {
  return b = 6;
}

c = test();
console.log(b); // Logs out 6
console.log(c); // Logs out 6

答案 3 :(得分:-2)

测试此功能的一个好方法是打开浏览器并查看其功能。让我们看看当控制台记录作业时,Chrome Dev工具会发生什么。

var someNum = 5;

console.log(someNum = 20);
  

20

答案 4 :(得分:-2)

如果你没有使用=>,它将会是这样的

var _that = this;
.subscribe(function(link){
   return _that.currentAction = link;
}

返回指定的值。

请参阅docs

  

(param1,param2,...,paramN)=> {statements}
  (param1,param2,...,paramN)=>表达
  //等价于:(param1,param2,...,paramN)=> {return expression; }

     

//当只有一个参数名称时,括号是可选的:
  (singleParam)=> {statements}
  singleParam => {statements}