2016-04-08 22 views
0

今天,我有一个难以捕捉的错字,因为它没有像我预料的那样抛出一个错误...为什么下面的JavaScript代码返回true?它不应该抛出一个错误?

经过一些快速测试后,下面的代码总是返回true,显然,在这种情况下返回'第一'。为什么会发生?为什么它不产生错误?

下面是代码的一个简单的例子:

function func(num) { 
    return num = 5 ? 'first' : 'second'; 
} 

console.log(func(1)); // log 'first' 

我棉短绒抓住它,但我是在JSBin最初并没有注意到。

回答

4

num = 5 ? 'first' : 'second'表达式进行求值如下:

  1. 5 ? 'first' : 'second'表达首先被计算(因为条件运算符具有比赋值操作更高的优先级),并返回值'first'因为5是“truthy”。
  2. num = 'first' expression将'first'字符串分配给num变量,并返回'first',因为赋值运算符=返回右操作数。

相关链接:

+0

地狱你怎么这么快?谢谢你@zerkms – JordanHendrix

+1

@JordanHendrix我是猫 - 猫很快:3 – zerkms

+0

我得到的第二部分,5是truthy,第一部分是更多的问题,再次感谢 – JordanHendrix

相关问题