我正在开发一个简短的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)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |