为什么以下javascript代码返回true?不应该抛出错误吗?

时间:2016-04-08 02:45:58

标签: javascript function error-handling syntax-error

今天,我有一个难以捕捉的拼写错误,因为它没有像我预期的那样抛出错误......

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

以下是代码的简单示例:

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

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

我的linter抓住了它,但我最初在JSBin中并没有注意到。

1 个答案:

答案 0 :(得分:4)

num = 5 ? 'first' : 'second'表达式的评估如下:

    首先计算
  1. 5 ? 'first' : 'second'表达式(因为条件运算符的优先级高于赋值运算符)并返回值'first',因为5是" truthy"。
  2. num = 'first'表达式将'first'字符串分配给num变量并返回'first',因为赋值运算符=返回正确的操作数。
  3. 有用的链接:

相关问题