最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Why does {} == false throw an exception? - Stack Overflow

programmeradmin0浏览0评论

In IE and Chrome, typing this into the JavaScript console throws an exception:

{} == false   // "SyntaxError: Unexpected token =="

However, all of these statements are evaluated with no problem:

false == {}   // false

({} == false) // false

var a = {};
a == false    // false

Is this intentional behavior? Why does this happen?

In IE and Chrome, typing this into the JavaScript console throws an exception:

{} == false   // "SyntaxError: Unexpected token =="

However, all of these statements are evaluated with no problem:

false == {}   // false

({} == false) // false

var a = {};
a == false    // false

Is this intentional behavior? Why does this happen?

Share Improve this question asked May 22, 2014 at 1:50 JonnJonn 1,6741 gold badge16 silver badges26 bronze badges 9
  • 2 Another oddity: [] == false // true – Dexter Commented May 22, 2014 at 1:54
  • @DexterW I was reading up on truthy values. Confusing stuff. – Jonn Commented May 22, 2014 at 1:55
  • Weird, [] == false is throwing me, but I feel like I've seen it before. Edit: Aha! The array's toString method is secretly called, producing '', which is falsey! Correspondingly, [] == '' is true. – ajp15243 Commented May 22, 2014 at 2:00
  • 2 Why does function a() { b: 1 } NOT throw an exception? – user663031 Commented May 22, 2014 at 3:18
  • @torazaburo I would like to know. – Jonn Commented May 22, 2014 at 3:25
 |  Show 4 more comments

1 Answer 1

Reset to default 24

In the console, when you start a statement with {}, you are not creating an object literal, but a code block (i.e. the same block as you would make with an if statement or a loop body). A symbol like == is then obviously not expected afterwards.

If you think of a code block, you know that something like a = 5; could come after it:

if (some_condition) {
    // do something
}
a = 5;

You can then use this to test in the console, and find that it works just fine:

{} a = 5;
发布评论

评论列表(0)

  1. 暂无评论