快速提问,我是es6语法和typscript的新手,我刚刚在当前的ng2项目中找到了这段代码:
this.contextActions.getCurrentContextAction().subscribe((link) => this.currentAction = link);
要明白我是否理解正确。
函数subscribe将一个带参数(链接)的函数作为参数,并将输入参数分配给当前操作,并返回该分配的结果?
我的理解是否正确? 这个箭头函数返回的实际内容是什么?这个结果是什么? 分配不会返回任何内容吗?
请把它告诉我。
由于
答案 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}