今天,我有一个难以捕捉的拼写错误,因为它没有像我预期的那样抛出错误......
经过一些快速测试后,下面的代码总是返回true,显然,在这种情况下返回' first'。为什么会这样?为什么它不会产生错误?
以下是代码的简单示例:
function func(num) {
return num = 5 ? 'first' : 'second';
}
console.log(func(1)); // log 'first'
我的linter抓住了它,但我最初在JSBin中并没有注意到。
答案 0 :(得分:4)
num = 5 ? 'first' : 'second'
表达式的评估如下:
5 ? 'first' : 'second'
表达式(因为条件运算符的优先级高于赋值运算符)并返回值'first'
,因为5
是" truthy"。 num = 'first'
表达式将'first'
字符串分配给num
变量并返回'first'
,因为赋值运算符=
返回正确的操作数。有用的链接: