我已经习惯了箭头功能,所以问题非常迅速。我知道它们隐式返回,并且只要它是表达式,我们就可以隐式返回。但是,例如,我可以减少以下内容吗
$scope.setEdit = () => { $scope.edit = true; }
至
$scope.setEdit = () => $scope.edit = true;
没有遇到任何不良行为?我不确定简单分配变量时箭头函数的行为。我只在通常会有return语句的地方使用过,从来没有简单的赋值。
这只是一个例子。谢谢!
答案 0 :(得分:2)
赋值只是一个表达式,就像其他表达式一样:
const a = () => b = 1;
console.log(
c = 1,
a()
);
没有遇到任何不良行为?
这取决于调用方是否期望返回某些内容。如果没有,返回的结果将无处可寻,就没有任何区别。
答案 1 :(得分:2)
这与箭头功能无关,但与表达式求值有关。表达式计算得出的结果(可能有副作用)将是返回值。
此箭头表示功能:
() => a = b
与以下内容相同并返回:
() => {
return a = b;
}
该函数具有副作用:a
获得一个值。赋值可以出现在表达式中并返回赋值。因此等效于:
() => {
a = b;
return b;
}
答案 2 :(得分:2)
我认为您对箭头功能的工作方式有误解。当您使用速记版本时,它们仅隐式返回。
这就是我的意思-这三个函数在功能上相同,都返回字符串'hello'
function a() { return 'hello' }
const b = () => { return 'hello' }; //arrow Fn /w braces needs a return statement to return anything
const c = () => 'hello'; //shorthand arrow Fn w/o braces returns whatever the arrow points to
这里是使用所有不同功能样式的演示示例
//regular function with no return value
var a = 'bar';
const myFunc1 = function() { a = 'foo'; }
console.log(myFunc1(), a);
//regular function with a return value
a = 'bar';
const myFunc2 = function() { return a = 'foo'; }
console.log(myFunc2(), a);
//arrow function with a return value
a = 'bar';
const myFunc3 = () => { return b = 'foo'; }
console.log(myFunc3(), a);
//arrow function with no return value
a = 'bar';
const myFunc4 = () => { b = 'foo'; }
console.log(myFunc4(), a);
//arrow function using shorthand, which has an implicit return value
a = 'bar';
const myFunc5 = () => b = 'foo';
console.log(myFunc5(), a);