谁能解释为什么这些操作产生这些结果:
(我知道第一个与字符串基于数组有关,但'基于'的含义是什么意思,它在内部是如何工作的)
[] + [] = ""
[] - []= 0
[] + {} = "[object Object]"
[] - {} = NaN
{} + {} = NaN
{} - {} = NaN
{} + 1 = 1
Run Code Online (Sandbox Code Playgroud)
当使用+运算符时,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)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |