请高手解释一下(function(){})是什么意思?要具体点的 (function(){}),碰到这段代码,看不怎么懂,求高手解释,最好举几个例子,和它的实用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你还少了个()吧(function(){})()是自执行函数 function adf(){}嗯,自执行函数!类似于调用adf(); 1. 什么是自执行的匿名函数? 它是指形如这样的函数: (function {// code})(); 2. 疑问 为什么(function {// code})();可以被执行, 而function {// code}();却会报错? 3. 分析 (1). 首先, 要清楚两者的区别: (function {// code})是表达式, function {// code}是函数声明. (2). 其次, js"预编译"的特点: js在"预编译"阶段, 会解释函数声明, 但却会忽略表式. (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错; 当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行. 楼上正解:你少了一个();应该是(function xx(){....})();你可以把function xx(){....}看成是定义一个函数返回了函数名xx就成了xx();所以相当于定义一个xx函数并且调用它 楼主看看这个帖子就明白了http://topic.csdn.net/u/20090217/13/653f7949-9e0c-4e99-adb3-dcbc99fca8d5.html?90676 // 如果执行一个方法是a(), 那么(function(){})()也可以认为是方法后加了一括号// function(){}()会报错, 因为他先解释了括号, 才解释了方法window.a = function(a1, a2){//在这里会根据所执行的方法创建两个函数var a1, var a2var a3 = "a3"//这里也手动创建一个A3 window.b = function(b1, b2){//在方法内创建的方法是可以访问上一个方法的var函数的, 上一个function的执行就不会发生任何释放的动作 alert(a1 + "-" + a2 + "-" + a3 + "-" + b1 + "-" + b2 ) }}(1, 2)//执行这个方法window.b(5, 6) 这叫匿名函数,其实匿名是常态1234 这些叫匿名数字/\d+/g 匿名正则"1234" 匿名字符串[1, 2] 匿名数组{} 匿名对象var a = "123" + "456"; // 两个匿名字符串合并把函数和这些数据类型放平,你就理解了。 JQuery 如何写 元素的class 被改变的事件 怎样用JavaScript来弄,从linux到windows文件格式中的换行符转换。 jQuery floatbox图片特效插件注册问题 Ext 看你会不会 想用javascript写一个调用客户端exe的东西 <img>问题 能不能用JAVASCRIPT写出一个类似于DELPHI中dialog的对话框 哪位朋友能提供XTable的代码 js 调动层的问题,请高手指教了 求一段代码,请各位大侠帮忙... qq空间装扮代码获取?懂的来啊 如下代码,提示tip未定义!如何解决
(function(){})()是自执行函数
嗯,自执行函数!类似于调用adf();
它是指形如这样的函数: (function {// code})(); 2. 疑问
为什么(function {// code})();可以被执行, 而function {// code}();却会报错? 3. 分析
(1). 首先, 要清楚两者的区别:
(function {// code})是表达式, function {// code}是函数声明.
(2). 其次, js"预编译"的特点:
js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
(3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行.
你少了一个();
应该是(function xx(){....})();
你可以把function xx(){....}看成是
定义一个函数返回了函数名xx
就成了xx();
所以相当于定义一个xx函数并且调用它
http://topic.csdn.net/u/20090217/13/653f7949-9e0c-4e99-adb3-dcbc99fca8d5.html?90676
// function(){}()会报错, 因为他先解释了括号, 才解释了方法window.a = function(a1, a2){
//在这里会根据所执行的方法创建两个函数var a1, var a2
var a3 = "a3"//这里也手动创建一个A3
window.b = function(b1, b2){
//在方法内创建的方法是可以访问上一个方法的var函数的, 上一个function的执行就不会发生任何释放的动作
alert(a1 + "-" + a2 + "-" + a3 + "-" + b1 + "-" + b2 )
}
}(1, 2)//执行这个方法window.b(5, 6)
/\d+/g 匿名正则
"1234" 匿名字符串
[1, 2] 匿名数组
{} 匿名对象
var a = "123" + "456"; // 两个匿名字符串合并
把函数和这些数据类型放平,你就理解了。