用分号表示奇怪的JavaScript行

时间:2015-06-28 13:17:36

标签: javascript

这个代码我遇到了一个奇怪的问题。我可以很容易地解决它,但我想知道为什么会这样。

如果我在下面发表评论string TextFile ::getName() const{ return text_; } void TextFile :: print() const { cout << text_ << endl; } bool TextFile :: operator==(const TextFile& textFile) const { return text_==textFile.text_; } ,我会在IFFY中收到child错误。该功能位于全球范围内,应该可以在任何地方使用。不确定为什么?

JSFiddle link

undefined

(还有other issues with this code我在一个额外的问题中询问过)

1 个答案:

答案 0 :(得分:4)

这只是自动分号插入搞乱你。当你省略child时,你会得到:

child=function() {
    parent.call(this);    
    child.prototype = new parent(); 
}

(function(){
    var instance1 = new child();
    console.log( instance1 );  // Empty Object

    var instance2 = new child();
    console.log( instance2 ); // Object is not empty

}());

解析为:

child=function() {
    parent.call(this);    
    child.prototype = new parent(); 
}(function(){ // FUNCTION CALL
    var instance1 = new child();
    console.log( instance1 );  // Empty Object

    var instance2 = new child();
    console.log( instance2 ); // Object is not empty
}());