function () {alert(1);}没有名称的函数,是匿名函数;它不会立即运行的 (function (s) {alert(s);})(2);这样参数2就被传递到匿名方法中了,s是形参
匿名函数执行 (function(){ alert("1"); })();
函数需要一个名字的原因是用户要调用这个函数,于是函数名就是其唯一索引 如 function a(){alert"I am A";}但是当一个函数可能不需要调用,也就根本不需要这个索引,也就是函数名了(function(){ alert("I am A"); })(); 我估计当初的设计就是因为很多函数太过专用所以干脆就匿名算了,反正也不会被复用。不过看着真的很乱...
你要运行test 得这样吧:test();
你也可以这样:(test)();//这样也能运行
(test)()//指向是已经存在的函数test 如果想要运行还不存在函数就要
(function (){})()//运来
还有一种理解是:表达式不能以 function 开头,所以要加上()
这是闭包,楼主可以搜索
能再详细一点吗?()是定义一个匿名方法吗?
既然是匿名的就不能在其他地方引用?只能立即执行?
定义方法不是用function关键字吗?
function foo(){
//这是定义一个方法
}()定义匿名方法,方法体呢?
是下面这样吗?
(function(){
alert("me");
})
(function (){
alert("me");
})
在浏览器里没有引起任何脚本错误...
确实()();后边那个括号是运行的.
前边那个()括号是定义函数的
(
alert("me");
)
会得到缺少")"的异常!如果写
(
)alert("me");//这显然是不正确的,呵呵
)
会得到语法错误的异常, 这显然是不正确的如果单写()也会得到语法错误的异常o(︶︿︶)o 唉...纠结啊...
(function (s) {alert(s);})(2);这样参数2就被传递到匿名方法中了,s是形参
匿名函数执行
(function(){
alert("1");
})();
函数需要一个名字的原因是用户要调用这个函数,于是函数名就是其唯一索引
如
function a(){alert"I am A";}但是当一个函数可能不需要调用,也就根本不需要这个索引,也就是函数名了(function(){
alert("I am A");
})();
我估计当初的设计就是因为很多函数太过专用所以干脆就匿名算了,反正也不会被复用。不过看着真的很乱...
alert("1");
}
)();
上面代码里,第一个(),被用作强制运算符,把里面的匿名函数直接量转变成一个函数对象的引用;后面的()是一般的函数调用。
function(){}();这样是错误的。解析器会解释成:function(){};
();
function(){} 没有函数名,叫做匿名函数;
调用一个命名函数是这样 xxx();和(xxx)();是等效的。
调用一个匿名函数是这样 (函数体...)();所以就有了(function(){})();