为什么以下 javascript 代码 return 为真?它不应该抛出错误吗?
Why does the following javascript code return true? Shouldn't it throw an error?
今天,我遇到了一个很难发现的错字,因为它并没有像我预期的那样抛出错误...
经过一些快速测试后,下面的代码总是 returns 正确,显然,在本例中 returns 'first'。为什么会这样?为什么它不产生错误?
下面是一个简单的代码示例:
function func(num) {
return num = 5 ? 'first' : 'second';
}
console.log(func(1)); // log 'first'
我的 linter 发现了它,但我最初在 JSBin 中并没有注意到。
num = 5 ? 'first' : 'second'
表达式计算如下:
5 ? 'first' : 'second'
表达式首先求值(因为条件运算符的优先级高于赋值运算符)并且 returns 值 'first'
因为 5
是 "truthy".
num = 'first'
表达式将 'first'
字符串分配给 num
变量,returns 'first'
因为赋值运算符 =
returns 右操作数.
有用的链接:
今天,我遇到了一个很难发现的错字,因为它并没有像我预期的那样抛出错误...
经过一些快速测试后,下面的代码总是 returns 正确,显然,在本例中 returns 'first'。为什么会这样?为什么它不产生错误?
下面是一个简单的代码示例:
function func(num) {
return num = 5 ? 'first' : 'second';
}
console.log(func(1)); // log 'first'
我的 linter 发现了它,但我最初在 JSBin 中并没有注意到。
num = 5 ? 'first' : 'second'
表达式计算如下:
5 ? 'first' : 'second'
表达式首先求值(因为条件运算符的优先级高于赋值运算符)并且 returns 值'first'
因为5
是 "truthy".num = 'first'
表达式将'first'
字符串分配给num
变量,returns'first'
因为赋值运算符=
returns 右操作数.
有用的链接: