2013-03-01 52 views
0

当我在Javascript中尝试一些fundemantels时,遇到了一个让我惊讶的问题,但我找不到答案。 我得到了以下,其中工程perfecty:Javascript定义对象,逗号大小写

var obj= new Object(); 
    obj.test = "Hello" 

    obj.testTwo= function(){ 
     console.log(this.test) 
    },obj.testTwo(); 

当我尝试它没有一个逗号,这是行不通的。

var obj= new Object(); 
    obj.test = "Hello" 

    obj.testTwo= function(){ 
     console.log(this.test) 
    }obj.testTwo(); 

所以我试过这作为第三个选项...它的工作原理?

var obj= new Object(); 
    obj.test = "Hello" 

    obj.testTwo= function(){ 
     console.log(this.test) 
    } 
    obj.testTwo(); 

现在我很安静困惑。为什么要使用逗号,为什么它会在休息时间工作?

+2

[为什么使用分号?](http://stackoverflow.com/questions/2399935/why-use-semicolon) – jondavidjohn 2013-03-01 19:00:44

+0

JavaScript基本原理:使用分号,即使您认为它是可选的。 – jbabey 2013-03-01 19:02:29

+1

当你为[javascript逗号运算符]搜索StackOverflow时有很多答案(http://stackoverflow.com/search?q=javascript+comma+operator) – 2013-03-01 19:02:36

回答

0

逗号运算符评估它的两个操作数(从左到右)并返回第二个操作数的值。

因此,它会评估您的两个代码。但是,当你把它们放在一起时不会。

阅读more ...

例子:

这是相同的,当你做

var a = 10, b = 40; 
+0

但为什么只需要在匿名函数中使用它,那么break又如何呢? – xhallix 2013-03-01 19:01:17

+0

@ChristophHa由于换行符(有时)会结束语句。 – ATOzTOA 2013-03-01 19:04:30

+0

所以在这种情况下休息安静是否一样? – xhallix 2013-03-01 19:05:29

0

换行符(\n\r\n)和逗号(,)充当语句分隔符。

2

在第一个片段中,逗号运算符在记录文件时执行其职责:“evaluates both of its operands (from left to right) and returns the value of the second operand.MDN

基本上你的第二个片段是一个任务。即使最后一个表达式是一个语句块,分配也应该以分号结尾。但是,这对ASI并不明显。因此,此代码段在块和对象方法调用之间没有分号或换行符的情况下失败,其中解释器期望看到运算符或赋值的终止。如果找不到,则会引发Unexpected token错误。这同样的解释代表为什么第三个片段能够工作。