Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么下面的javascript代码返回true?不应该';它不会出错吗?_Javascript_Function_Error Handling_Syntax Error - Fatal编程技术网

为什么下面的javascript代码返回true?不应该';它不会出错吗?

为什么下面的javascript代码返回true?不应该';它不会出错吗?,javascript,function,error-handling,syntax-error,Javascript,Function,Error Handling,Syntax Error,今天,我有一个打字错误,很难抓住,因为它没有像我预期的那样抛出错误 经过一些快速测试后,下面的代码总是返回true,显然,在本例中返回“first”。为什么会发生这种情况?为什么不产生错误呢 下面是一个简单的代码示例: function func(num) { return num = 5 ? 'first' : 'second'; } console.log(func(1)); // log 'first' 我的林特抓住了它,但一开始我在一个JSBin中,没有注意到。num=5?”第一

今天,我有一个打字错误,很难抓住,因为它没有像我预期的那样抛出错误

经过一些快速测试后,下面的代码总是返回true,显然,在本例中返回“first”。为什么会发生这种情况?为什么不产生错误呢

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

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

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

我的林特抓住了它,但一开始我在一个JSBin中,没有注意到。

num=5?”第一个“:“第二个”
表达式的计算如下:

  • 5?“第一个“:“第二个”
    表达式首先求值(因为条件运算符的优先级高于赋值运算符),并返回值
    “第一个”
    ,因为
    5
    是“truthy”
  • num='first'
    表达式将
    'first'
    字符串赋值给
    num
    变量,并返回
    'first'
    ,因为赋值运算符
    =
    返回正确的操作数
  • 有用链接:


    num=5?“第一个“:“第二个”
    表达式的计算如下:

  • 5?“第一个“:“第二个”
    表达式首先求值(因为条件运算符的优先级高于赋值运算符),并返回值
    “第一个”
    ,因为
    5
    是“truthy”
  • num='first'
    表达式将
    'first'
    字符串赋值给
    num
    变量,并返回
    'first'
    ,因为赋值运算符
    =
    返回正确的操作数
  • 有用链接:


    你怎么跑得这么快?谢谢你@zerkms@JordanHendrix我是一只猫-猫很快:3我得到了第二部分,第五部分是真实的,第一部分是更多的问题,再次感谢这几乎是正确的,但不完全正确。num未指定为5。它被分配为
    “第一个”
    。它实际上被评估为
    5?'第一个“:“第二个”
    ,其计算结果为
    “第一个”
    。然后分配给num.@JordanHendrix ECMAScript遵循精确的语言规范。怪异是在返回语句中执行赋值,但我想你现在知道了非常类似于做
    if(x=y)
    ,有时人们确实需要它,而不是
    if(x=y)
    。你怎么这么快?谢谢你@zerkms@JordanHendrix我是一只猫-猫很快:3我得到了第二部分,第五部分是真实的,第一部分是更多的问题,再次感谢这几乎是正确的,但不完全正确。num未指定为5。它被分配为
    “第一个”
    。它实际上被评估为
    5?'第一个“:“第二个”
    ,其计算结果为
    “第一个”
    。然后分配给num.@JordanHendrix ECMAScript遵循精确的语言规范。怪异是在返回语句中执行赋值,但我想你现在知道了非常类似于做
    if(x=y)
    ,这是人们有时真正想要的,而不是
    if(x=y)