一般认为,应该将Javascript代码包装在一个函数中以防止泄漏到全局范围,并将每个函数之外所需的任何内容分配给head
对象(网页浏览器中的window
)。Javascript包装方法之间的区别
我看到的这两种主要方法在野外:
方法1:
(function() {
// code here
}).call(this);
方法2:1
(function() {
// code here
})();
方法是来自已编译的CoffeeScript代码和方法2似乎是jQuery插件的首选风格:
改进方法2的jQuery:
(function($) {
// JQuery Code
})(jQuery);
问题:之间有什么方法1和方法2区别? CoffeeScript喜欢关注简洁,所以我认为CoffeeScript背后的人一定会选择方法2而不是方法1。
问题询问有关呼叫(此),它与呼叫(窗口)不同。请参阅CoffeeScript示例,您将看不到呼叫(窗口) – liammclennan
第一个是将函数内的* this *设置为与函数外部的* this *相同,可能它是全局对象(通常是*窗口*在浏览器中,但脚本可能被编写为支持非浏览器环境)。 – RobG