//实例一
var test1 = function(param){
//do something
};
//实例一
var test2 = function(){
function test2(param){
//do something
}
return test2;
}();
//实例一
var test1 = function(param){
//do something
};
//实例一
var test2 = function(){
function test2(param){
//do something
}
return test2;
}();
如果要问哪个好,那只能说第一个。因为示例2是完全没有意义的一个例子,你可能想对比的是
//实例二
function(){
function test2(param){
//do something
}
test2()
}();
这样可以避免污染作用域内同名的函数。
而如果你是对比我说的代码,那仅取决于你需不需要要避免,如果需要则使用示例2(比如自己写的插件给别人用避免污染),如果不需要(都是你自己可控的代码)则使用示例1.
举个例子把
a(1) // 可以执行
function a (i){ ... }
a(2) // 可以执行
b(1) //报错
var b = function (i){ ... }
b(2) // 可以执行
//我跑偏了...
你这俩函数其实就是一个是全局作用域, 一个是多套了层作用域的关系,避免了污染作用域的问题
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2相对于1多了一个内部作用域
纯粹返回一个函数 1好
返回之前还要做复杂的操作 也不想污染全局作用域 2好