【发布时间】:2021-04-08 11:39:05
【问题描述】:
我想要这个,但使用箭头的行数更少
console.log([1, 2, 3, 4].every(
value => {
if (value > 0) {
return 1
}
}))
输出:真
它工作正常,但是当我试图减少下面的代码行时它不起作用有没有办法做到这一点,是否不能在不使用任何三元的情况下编写单个 if 语句
console.log([1, 2, 3, 4].every(value =>
if (value > 0) 1)
);
output : /tmp/main.js:1
console.log([1,2,3,4].every(value=> if(value>0) 1))
^^
SyntaxError: Unexpected token 'if'
at Module._compile (internal/modules/cjs/loader.js:892:18)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11
[Program exited with exit code 1]
是否可以使用像这样的箭头运算符返回除 true 或 false 之外的任何内容?我想返回真棒,但它给我一个错误。
k=val=>val>0 "awesome";
console.log(k(2))
k=val=>val>0 "awesome";
^^^^^^^^^
SyntaxError: Unexpected string
at Module._compile (internal/modules/cjs/loader.js:892:18)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11
我试图问这个基于箭头函数的问题,但有人告诉我单独问这个问题,这就是我在这里问的原因。
【问题讨论】:
-
只是
value=> value>0。你不能使用if,因为它是一个语句,一个没有主体的箭头函数只需要一个表达式。此外,没有真正的理由返回1 -
只需使用ternary operator。
-
@DaneBrouwer 为什么?
-
@VLAZ 啊,误读了这个问题。看到 OP 返回了
1,所以我认为他们想从条件中返回某种值。从字面上看,应该能够按照您的建议提供条件。 -
@VLAZ 非常感谢我明白了 value=> value>0 它会返回 true 因此每个函数都直接将其视为 true 假设我想返回除 1 或 0 之外的任何值,例如 value=>如果 val>1 "真棒" 在这种情况下我该怎么做?不使用 {} 有可能吗?
标签: javascript node.js arrow-functions