(function(){})()名为自执行匿名函数,可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许。
要注意,没有外部括号的情况下,即function(){}()函数不会自执行,这是一个匿名函数,但是没有赋值给一个变量
看下面的例子:
var text = (function(){ alert("1"); var a = "aa"; })(); console.log(a);
这是一个自执行函数,alert会执行,内部的参数外部无法调用
function(){ alert("1"); var a = "aa"; }(); console.log(a);
这个函数无法执行,会报错,匿名函数无法执行
但是赋值之后就可以执行:
var text = function(){ alert("1"); var a = "aa"; }(); console.log();
函数可以执行相当于var text=function(){};text();
另外,如果给自执行函数赋值给一个变量,其结果与上面相同,变量的值为这个自执行函数的返回值,这里可以拿之前随笔里的一个例子:
var text = (function(){ var a = null; var b = function(){ return a ; }; var public = function(value){ //特权方法 }; public.prototype.setName = function(value){ a = value; return this; }; public.prototype.getName = function(){ return a; }; return public; //返回特权方法 })(); console.log(text)
这里text的值为:
时间: 2024-11-01 16:09:08