使用()
将function expression放入其中,告诉编译器里面的是个expression, 立刻调用这个function。 这在很多库里面很多见。
我想到一点是, 这样我们可以声明自己的变量而不担心和其它的冲突。
javascript 在浏览器中,我们会把所有的代码顺序执行,包括库中的,所以名字有可能覆盖。
var firstname = 'Hao';
(function(name) {
var greeting = "Hello ";
console.log(greeting + name);
}(firstname));
// 把括号取出来也行
(function(name) {
var greeting = "Hello ";
console.log(greeting + name);
})(firstname);
// 当执行下面这个function时, s被绑定到this的一个属性了, 所以不需要声明,不需要使用new
func1 = function (){
s = 'not use new';
}
func1();
console.log(this.s);
// 当执行下面这个function时,我们声明了一个变量 s, 当func结束时,这个func的执行环境没了,s也消失了即我们回到了一个没有s的主环境中。
func2 = function (){
var s = 'use new';
}
func2();
console.log(func2);
image.png
下面这个例子,方程执行完后,greeting 还是 Hola,不会被影响。
var greeting = "Hola";
(function(global, name) {
global.gg = "change the global obj";
var greeting = "Hello ";
console.log(greeting + name);
})(window, "John");
console.log(greeting); // Hola
如下图:
image.png
网友评论