CodeMash 2012的"Wat"谈话基本上指出了Ruby和JavaScript的一些奇怪的怪癖.
我在http://jsfiddle.net/fe479/9/上做了一个JSFiddle的结果.
下面列出了JavaScript特有的行为(我不知道Ruby).
我在JSFiddle中发现我的一些结果与视频中的结果不一致,我不知道为什么.但是,我很想知道JavaScript在每种情况下如何处理幕后工作.
Empty Array + Empty Array
[] + []
result:
<Empty String>
Run Code Online (Sandbox Code Playgroud)
+在JavaScript中使用数组时,我对运算符非常好奇.这与视频的结果相匹配.
Empty Array + Object
[] + {}
result:
[Object]
Run Code Online (Sandbox Code Playgroud)
这与视频的结果相匹配.这里发生了什么?为什么这是一个对象.什么是+运营商吗?
Object + Empty Array
{} + []
result
[Object]
Run Code Online (Sandbox Code Playgroud)
这与视频不符.该视频表明结果是0,而我得到[对象].
Object + Object
{} + {}
result:
[Object][Object]
Run Code Online (Sandbox Code Playgroud)
这与视频不匹配,输出变量如何导致两个对象?也许我的JSFiddle错了.
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
Run Code Online (Sandbox Code Playgroud)
做wat + 1导致wat1wat1wat1wat1......
我怀疑这只是简单的行为,试图从字符串中减去一个数字导致NaN.
这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
以下代码给出了奇怪的结果:
console.log("" + 1 + 10 + 2 - 5 + "8");Run Code Online (Sandbox Code Playgroud)
我已经尝试输入各种不同的值来解决它,但我无法理解引擎盖下发生了什么.
这似乎在其逻辑中非常明显(字符串不能减去)但我想知道如何在JavaScript的底层执行中做出这个决定.在这里如何应用强制规则?
我在Javascript中读了一本关于运算符的书,这让我很困惑.
console.log("5"+1);
Run Code Online (Sandbox Code Playgroud)
这会使"5"成为一个字符串.结果就是这样51.
console.log("5"-1);
Run Code Online (Sandbox Code Playgroud)
这个结果就是4.我知道它转换"5"为5,但为什么它不显示undefined为"字符串减去数字"?
更新:那么其他语言怎么样?他们更受限制吗?
JavaScript强制,订单优先级和关联性可能令人困惑,但我使用下面的链接来理解它,
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
但我仍然没有得到"1"+"1"导致"11"和"1"- - "1"导致的原因2,
- -应该转换成+它应该处理"1"+"1",我在这里缺少什么?
你可以在这里测试一下:
console.log("1" + "1");
console.log("1"- - "1");Run Code Online (Sandbox Code Playgroud)
为什么最后一个操作返回 20?
console.log(2 + 2); // equals 4
console.log("2" + "2"); // equals "22"
console.log(2 + 2 - 2); // equals 2
console.log("2" + "2" - "2"); // equals 20Run Code Online (Sandbox Code Playgroud)
为什么JavaScript使用与减号不同的字符串和整数来评估加号?
一个例子:
console.log(1+"1");
console.log(1-"1");
Run Code Online (Sandbox Code Playgroud)
第一行打印"11",第二行打印0.