Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 为什么是typeof';s结果与传入表达式的计算结果不同?_Javascript_Object_Types_Nan_Typeof - Fatal编程技术网

Javascript 为什么是typeof';s结果与传入表达式的计算结果不同?

Javascript 为什么是typeof';s结果与传入表达式的计算结果不同?,javascript,object,types,nan,typeof,Javascript,Object,Types,Nan,Typeof,如果两个对象加在一起等于NaN(不是一个数字),这在技术上属于数字类型,那么为什么将两个对象的类型加在一起会导致“字符串” 我将通过回复来表达这一点: {}+{} >NaN 好啊两个对象加在一起创建NaN >typeof(NaN) >“数字” 好啊我们知道NaN的类型是“数字” >typeof({}+{}) “字符串” 等待这不应该也是“数字”吗 我知道javascript有一个不那么理想的类型系统,但我对这里发生的事情感到困惑。是否由于某种原因,正在将类型从数字转换为字符串?数字甚至是这里进行

如果两个对象加在一起等于NaN(不是一个数字),这在技术上属于数字类型,那么为什么将两个对象的类型加在一起会导致“字符串”

我将通过回复来表达这一点:
{}+{}

>NaN

好啊两个对象加在一起创建NaN

>typeof(NaN)

>“数字”

好啊我们知道NaN的类型是“数字”

>typeof({}+{})

“字符串”

等待这不应该也是“数字”吗


我知道javascript有一个不那么理想的类型系统,但我对这里发生的事情感到困惑。是否由于某种原因,正在将类型从数字转换为字符串?数字甚至是这里进行的类型转换的一部分吗?或者我只是使用了typeof错误?

{}+{}
是一个空的块(
{}
),后面是从对象到数字的类型转换(
+{}
)。它基本上读作

{} // empty block (a statement)
;  // empty statement (just for clarity)
+{}; // expression statement (unary plus, object literal -> conversion to number)
但是,如果使用
typeof({}+{})
,则
{}+{}
将被计算为表达式,在这种情况下,
{}
只能是对象文本,
+
是串联运算符

也可以仅使用分组运算符强制将构造计算为表达式:

({} + {}) // expression statement (string concatenation with two objects)


另请参阅和其他有关的问题。

{}+{}
是一个空的块(
{}
),后面是从对象到数字的类型转换(
+{}
)。它基本上读作

{} // empty block (a statement)
;  // empty statement (just for clarity)
+{}; // expression statement (unary plus, object literal -> conversion to number)
但是,如果使用
typeof({}+{})
,则
{}+{}
将被计算为表达式,在这种情况下,
{}
只能是对象文本,
+
是串联运算符

也可以仅使用分组运算符强制将构造计算为表达式:

({} + {}) // expression statement (string concatenation with two objects)


另请参阅和其他有关的问题。

{}+{}
是一个空的块(
{}
),后面是从对象到数字的类型转换(
+{}
)。它基本上读作

{} // empty block (a statement)
;  // empty statement (just for clarity)
+{}; // expression statement (unary plus, object literal -> conversion to number)
但是,如果使用
typeof({}+{})
,则
{}+{}
将被计算为表达式,在这种情况下,
{}
只能是对象文本,
+
是串联运算符

也可以仅使用分组运算符强制将构造计算为表达式:

({} + {}) // expression statement (string concatenation with two objects)


另请参阅和其他有关的问题。

{}+{}
是一个空的块(
{}
),后面是从对象到数字的类型转换(
+{}
)。它基本上读作

{} // empty block (a statement)
;  // empty statement (just for clarity)
+{}; // expression statement (unary plus, object literal -> conversion to number)
但是,如果使用
typeof({}+{})
,则
{}+{}
将被计算为表达式,在这种情况下,
{}
只能是对象文本,
+
是串联运算符

也可以仅使用分组运算符强制将构造计算为表达式:

({} + {}) // expression statement (string concatenation with two objects)


另请参见与相关的问题。

{}+{}!=({}+{})
第一个大括号形成一个块。因为JavaScript。还可以看到这个非常棒的演讲,其中有一个例子:
{}+{}!==({}+{})
第一个大括号形成一个块。因为JavaScript。还可以看到这个非常棒的演讲,其中有一个例子:
{}+{}!==({}+{})
第一个大括号形成一个块。因为JavaScript。还可以看到这个非常棒的演讲,其中有一个例子:
{}+{}!==({}+{})
第一个大括号形成一个块。因为JavaScript。另请参见本精彩演讲,其特色就是以下示例: