0

当我在 Javascript 中尝试一些fundemantels时,我遇到了一个问题,这让我很惊讶,但我找不到答案。我得到了以下内容,效果很好:

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();

现在我很困惑。为什么要使用逗号,为什么要使用逗号?

4

4 回答 4

3

您所看到的是逗号运算符的作用。https://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/

于 2013-03-01T19:00:50.160 回答
2

在第一个片段中,逗号运算符按照文档中的说明履行职责: " evaluates both of its operands (from left to right) and returns the value of the second operand." MDN

基本上你的第二个片段是一个作业。赋值应始终以分号结束,即使它们的最后一个表达式是一个语句块。但是,这对ASI来说并不明显。因此,这个片段在块和对象方法调用之间没有分号或换行符就失败了,解释器希望看到一个运算符或赋值的终止。如果没有找到这些,Unexpected token则会引发错误。同样的解释代表了为什么第三个片段有效。

于 2013-03-01T20:13:06.467 回答
0

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

于 2013-03-01T19:06:22.523 回答
0

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

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

阅读更多...

例子:

这和你做的时候一样

var a = 10, b = 40;
于 2013-03-01T18:59:54.843 回答