相关疑难解决方法(0)

对于CodeMash 2012的"Wat"演讲中提到的这些奇怪的JavaScript行为有什么解释?

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

743
推荐指数
4
解决办法
7万
查看次数

{} || []不是有效的JavaScript

为什么{} || []无效?

$ echo '[] || {}' | node # this works
$ echo '{} || []' | node # but this doesn't
[stdin]:1
{} || []
   ^^

SyntaxError: Unexpected token ||
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Object.<anonymous> ([stdin]-wrapper:6:22)
    at Module._compile (module.js:652:30)
    at evalScript (bootstrap_node.js:466:27)
    at Socket.<anonymous> (bootstrap_node.js:237:15)
    at emitNone (events.js:111:20)
    at Socket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)

$ echo '({}) || []' | node # unless you do this
Run Code Online (Sandbox Code Playgroud)

javascript node.js

17
推荐指数
1
解决办法
663
查看次数

为什么0 === {}没关系,但{} === 0会抛出错误?

我将以下内容放入浏览器控制台:

0 === {} // false
{} === 0 // SyntaxError: expected expression, got '==='
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

javascript

8
推荐指数
1
解决办法
146
查看次数

"{} === null"在开发人员控制台中抛出语法错误

为什么当我输入{} === null控制台时它会抛出

SyntaxError:意外的令牌===

null === {} 按预期给我假.

javascript syntax-error

5
推荐指数
1
解决办法
99
查看次数

大括号对象表示法在任何表达式中是否有效?

我目前正在分析Javascript语言.看起来您可以将许多概念分组为一个名为expression的基类型.甚至函数参数和定义也适合该组,以及字符串,数字和数学表达式.唯一不合逻辑的例外是在无意义的上下文中的大括号对象表示法.

由于函数由多个表达式组成,因此以下代码有效:

function valid(){
    /\W/;
    "ahll";
    var alpha;
    alpha;
    alpha={"first": 90, "second": 80};
    alpha;
    0, {"first": 90, "second": 80};
    [1,2,3];
    alpha;
    2+3;
    new RegExp("/\W/");
    return true;
}
Run Code Online (Sandbox Code Playgroud)

根据意图,以下代码也应该有效,但第二行会出现"missing; before statement"语法错误:

function invalid(){
    {"first": 90, "second": 80};
    return true;
}
Run Code Online (Sandbox Code Playgroud)

在接受表达式的每个其他情况下都接受大括号对象表示法,除了这些允许使用大括号代码块的情况.

上面提到的语法错误是由javascript的实现还是规范引起的?

这种无意义的表达是否有更精确的名称?

javascript expression javascript-objects curly-brackets

5
推荐指数
1
解决办法
791
查看次数

为什么 eval('{}=={}') 是一个错误,而 eval('[]==[]') 不是?

我正在写一个关于 javascript thruthiness 的小游戏,我发现了一些奇怪的东西。

eval('{}=={}') // error

{}=={} // false in the console but is an error in a source file

eval('[]==[]') // no error => false

eval('{}') // no error => undefined

eval('({})') // no error => Object

eval('[]') // no error => Array
Run Code Online (Sandbox Code Playgroud)

为什么 eval('{}=={}') 是一个错误,为什么 eval 包含 {} 的东西如此不一致?

javascript

5
推荐指数
1
解决办法
75
查看次数

为什么"{} == {}"导致SyntaxError?

可能重复:
为什么{}!=({})在JavaScript中?

我今天试了一下它今天把它扔给了我SyntaxError它让我很奇怪; 这有什么问题?

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

怎么了?

javascript syntax-error

3
推荐指数
1
解决办法
100
查看次数

js cast和type coercion - 为什么!! {} [true]不是真的?

在Chrome控制台中输入:

{}[true]  // [true] (object)
!!{}[true] // false (boolean)
Run Code Online (Sandbox Code Playgroud)

当{} [true]是什么时,为什么!! {} [true]不正确?

javascript console casting

3
推荐指数
2
解决办法
169
查看次数

typeof undefined对象不等于未定义变量的类型

在JavaScript中,typeof {}返回"object",而评估{}返回undefined.为什么是这样?

var a;
a; //undefined
{}; //undefined
typeof a === typeof {}; //false
Run Code Online (Sandbox Code Playgroud)

javascript types

-1
推荐指数
1
解决办法
88
查看次数