【发布时间】:2018-12-04 14:40:21
【问题描述】:
我有一个简单的石头剪刀布游戏,我将函数编写为箭头函数,将 if/else 编写为三元运算符,但它返回错误。它适用于普通 if / else 但不适用于三元。
const getUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
userInput === 'rock' || 'paper' || 'scissors' ? return getUserChoice : console.log('please enter a valid entry');
};
getUserChoice('rock');
【问题讨论】:
-
||不是这样工作的。您必须将左侧与每个右侧包括在内。此外,您可能会遇到语法错误,因为您的return位于表达式的中间。 -
这根本不会“返回错误”——这段代码甚至不会被解析为有效代码——
SyntaxError: expected expression, got keyword 'return' -
return是一个声明;它不能出现在表达式的中间。您的比较需要是userInput === 'rock' || userInput === 'paper' || userInput === 'scissors'等 -
只是为了澄清,因为标题具有误导性。此问题与使用的箭头符号无关。
-
@meow-meow-meow 请先将其重写为运行的代码,删除
return。三元格式为a = b ? c : d,其中b 是条件,c 和d 是表达式。那里没有return。在这一点上,我怀疑您刚刚解决了自己的问题。请记住查看实际错误是什么,如果您知道它的含义,请解决它。如果你不这样做:在谷歌搜索后告诉人们它是什么意思。
标签: javascript function ecmascript-6 ternary-operator