你能在javascript中解释对象和数组算法吗?

Nat*_*ker 4 javascript

谁能解释为什么这些操作产生这些结果:

(我知道第一个与字符串基于数组有关,但'基于'的含义是什么意思,它在内部是如何工作的)

[] + [] = ""

[] - []= 0

[] + {} = "[object Object]"

[] - {} = NaN

{} + {} = NaN

{} - {} = NaN

{} + 1 = 1
Run Code Online (Sandbox Code Playgroud)

Jon*_*owe 5

当使用+运算符时,javascript将尝试将首先添加的元素转换为字符串,然后转换为int.当你施放一个空数组字符串所得到"",因此"" + "" = ""

[] + [] = ""  // equates to "" + "" = ""
Run Code Online (Sandbox Code Playgroud)

当使用-运算符时,javascript将尝试将元素转换为整数.转换为整数的空数组将产生0这样的结果0 - 0 = 0

[] - []= 0 // equates to 0 - 0 = 0
Run Code Online (Sandbox Code Playgroud)

同样的事情,空数组正在转换为""对象正在转换为, "[object Object]"因为与空字符串串联,结果是"" + "[object Object]" = "[object Object]"

[] + {} = "[object Object]" // equates to "" + "[object Object]" = "[object Object]"
Run Code Online (Sandbox Code Playgroud)

{}不能转换为int而是转换为undefined和0 - undefined = NaN

[] - {} = NaN // equates to 0 - undefined = NaN
Run Code Online (Sandbox Code Playgroud)

当表达式以空对象文字开头时,javaScript将第一个{}解释为空代码块并忽略它,因此计算以下表达式,+ {}因为NaN

{} + {} = NaN // equates to + {} = NaN


{} - {} = NaN // equates to - {} = NaN


{} + 1 = 1 // equates to + 1 = 1
Run Code Online (Sandbox Code Playgroud)