{} + [] 和 [] + {} 结果怎么会不同
How can {} + [] and [] + {} results be different
可能的重复项:
CodeMash 2012 的"Wat"演讲中提到的这些奇怪的 JavaScript 行为有什么解释?
有人可以向我解释一下返回结果在 javascript 中有何不同:
› {} + []
» 0
› [] + {}
» "[object Object]"
这是因为代码中的{}
不是对象文字,而是空块。
它被解析为:
{}; // empty block
+ []; // this result is shown in the console
与产生与[] + {}
相同的结果的({}) + []
进行比较;在这种情况下,括号强制{}
"在表达式上下文中"处理/解析。
SO上有一堆关于{}
的特殊双重性质的重复项(作为表达式或块?),但是,找到它们可能有些棘手。
我在元维基上找到了 https://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesize,并使用 Symbolhound 解决了我能找到的"最接近"的重复项,这些问题(与"评估 JSON 时需要添加括号有关")或这个(使用像"{} == false"这样的结构是一个语法错误)。
如果有人知道更好的方法来搜索 SO 以查找此类问题,或者有指向此类重复方便的链接......
相关文章:
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- 每次运行此代码时,我都会得到不同的结果,这是怎么回事
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- 拖放操作会产生不良结果
- {} + [] 和 [] + {} 结果怎么会不同
- 我怎么会滥用选择器的开头
- 哪里有“;请求”;以及“;响应”;来自,我怎么会发现
- 我刚刚显示的 javascript 变量怎么会立即错误为未定义
- Javascript不会更新或显示系统时间<怎么会
- 否则结果不会显示在 JavaScript 中
- FLEX ExternalInterface.available检查怎么会失败,但仍然不可用
- 触摸怎么会被拦截,某些元素会执行一些自定义动作,而其他元素会发生通常的行为
- 两个相同的字符串怎么会不相等呢
- 我怎么会有'this'setTimeout参数中的关键字
- jquery中的+$.怎么会只有基本的$
- 一个未定义的变量怎么会抛出类型错误?
- 长轮询怎么会有帮助呢?
- 使用ajax将javascript变量传递给php,结果不会;我什么也不展示