问题:
为什么函数包含在括号中?我从括号中取出了这个代码,它没有任何问题。
在(function(){... Code Here ...})()中使用代码有什么好处?喜欢它在下面的例子中?
代码:
(function() {
"use strict";
// Doesn't work because strict mode
// enforces the fact that the second example shouldn't work
if (true) {
function fn1() {
// This won't run
console.log("doesn't work -- have a great Die Hard Day XIII");
};
fn1();
}
})();
Code Here:将JQuery单词作为参数发送给此命名空间的内容是什么。我知道函数包含在(...)中的原因是创建一个命名空间。我想一个更好的问题是为什么一个人会传入一个变量,但我想这将是另一个命名空间需要变量的情况。
( function( $ ) {
// Init Skrollr
var s = skrollr.init({
render: function(data) {
//Debugging - Log the current scroll position.
//console.log(data.curTop);
}
});
} )( jQuery );
答案 0 :(得分:7)
我从括号中取出了这段代码,它没有任何问题。
这不正确;它本身无法运行(甚至无法解析)。 JavaScript在函数声明的位置看到function
,并假设它是函数声明。括号用于强制上下文成为表达式。如果它明确地是一个函数文字 - 例如,在变量声明中 - 但许多人发现它更具可读性,那么这种做法是多余的。例如,有一个jsHint option to enforce it。
答案 1 :(得分:1)
因为他们正在呼唤它:
(function() { ... })();
^^