相关疑难解决方法(0)

空数组似乎同时为真和假

空数组是真的,但它们也等于false.

var arr = [];
console.log('Array:', arr);
if (arr) console.log("It's true!");
if (arr == false) console.log("It's false!");
if (arr && arr == false) console.log("...what??");
Run Code Online (Sandbox Code Playgroud)

我想这是由于等于运算符操作的隐式转换.

任何人都可以解释幕后发生的事情吗?

javascript

192
推荐指数
3
解决办法
6万
查看次数

':'(冒号)在JavaScript中有什么作用?

我正在学习JavaScript,在浏览jQuery库时,我看到:(冒号)被大量使用.这在JavaScript中用于什么?

// Return an array of filtered elements (r)
// and the modified expression string (t)
   return { r: r, t: t };
Run Code Online (Sandbox Code Playgroud)

javascript

170
推荐指数
11
解决办法
13万
查看次数

为什么比较{}和[]显示错误?

在我的空闲时间,我只是在玩js控制台,我遇到了一个意想不到的错误:

js> [] == {}
false

js> {} == []
typein:5: SyntaxError: syntax error:
Run Code Online (Sandbox Code Playgroud)

我尝试过===:

js> [] === {}
false
js> {} === []
typein:9: SyntaxError: syntax error:
Run Code Online (Sandbox Code Playgroud)

我在这里想错了吗?

我用Firefox,Chrome和jscore测试了这个.

javascript firefox google-chrome javascript-objects

14
推荐指数
1
解决办法
373
查看次数

为什么`{} == null`会给出一个SyntaxError?

我可以将{}与true或false或本身进行比较,但是与null或undefined的比较会产生语法错误.这是因为{}是一个对象值而不是一个引用?感觉很奇怪它会是一个语法错误而不是某种运行时类型错误,或者只是工作.

为了澄清,我很好奇为什么这是一个SyntaxError,大多数情况下做的{} == {}不仅仅是SyntaxError,而且根本没有错误.

怪异行为的例子

javascript google-chrome

14
推荐指数
1
解决办法
168
查看次数

为什么"{} == false"错误的javascript语法,而"false == {}"不是?

以下是浏览器控制台(包括firefox和chrome)的结果, false == {}可以正常工作,但是{} == false会出现语法错误.

>> false == []
true
>> false == {}
false
>> 0 == false
true
>> false == []
true
>> false == {}
false
>> [] == false
true
>> {} == false
Uncaught SyntaxError: Unexpected token == 
Run Code Online (Sandbox Code Playgroud)

javascript

11
推荐指数
1
解决办法
145
查看次数