当我们写js文件的时候所有的文件都是在全局作用域中。
一个js文件中声明的变量或函数在另一个js文件中是可以访问的,但是当我们在当前js文件中声明了一个构造函数 fun,又在另一个js文件中声明了一个构造函数fun,因为我们将来项目有可能是由不同的人来写的,所以难免会遇到命名冲突的问题。
如果想要避免这种问题的话就要用到自调用函数:
//自调用函数 -- 开启一个新的作用域,避免命名冲突.
(function(){
console.log('1');
})()
自调用函数 -- 开启一个新的作用域,避免命名冲突.这样的话就可以把所有的代码放在里面了
(function(){
function Fun(){
this.print=function(){
console.log("Hello world");
}
}
})();
var fun=new Fun();
fun.print();
但是这时报错了,问题是因为我们开启了一个新的作用域,这个地方是局部作用域。
局部作用域定义的函数 在外部是访问不到的,这时候就需要将Fun构造函数暴露给外部,让外部可以访问
(function(){
function Fun(){
this.print=function(){
console.log("Hello world");
}
}
//把Fun构造函数让外部可以访问
window.Fun=Fun;
})();
var fun=new Fun();
fun.print();
这样就可以使用啦。 (提示:写多个自调用函数时,必须在自调用函数前加入分号)
每天进步一点点!