删除任何简单的语句后JavaScript崩溃

Max*_*Max 0 javascript

我正在开发一个简短的JavaScript程序,只有在特定位置注入任何简单的语句(如var asd;)时才能正常工作.该程序旨在演示一种简单的封装技术.

没有其他地方有效.任何琐碎的陈述都有效.这不是DOM加载问题,因为我甚至没有处理DOM.

有效的版本:(警告,3个警报) http://jsfiddle.net/bZUm6/3/

不起作用的版本:http: //jsfiddle.net/bZUm6/2/

请注意"var asd;" 在第一个版本中.

有人可以告诉我为什么吗?我真的很感激.

马克斯

小智 5

分号删除正在打破它.

即使你改变它也会奏效......

var asd;
Run Code Online (Sandbox Code Playgroud)

简单地说......

;
Run Code Online (Sandbox Code Playgroud)

原因是下一行代码开始于(,它恰好包含了一个关闭函数).

这被解释为函数调用运算符,并尝试调用前一个表达式.

    MyApp.util.toXML = function(options, obj) {
        // your code

        return result.join("");
    }

//    var asd;   // removing the semicolon

//  |------seen as invoking the result of the previous expression and passing
//  v         the function as an argument. 
    (function(toXML) {

        // your code

    })(MyApp.util.toXML);
//     ^---------------^ This is then attempting to invoke the return value
//     of "toXML", which if it successfully returned, returned a String, which 
//     can't be invoked.
Run Code Online (Sandbox Code Playgroud)