为了账号安全,请及时绑定邮箱和手机立即绑定

function oClick4(){

    var ajQuery4 = function(){

        show('ajQuery4') 

    }();

}


这个我变成:

function oClick4(){

    function(){

        show('ajQuery4') 

    }();

}

之后,点击“点击测试4”,就没有字符串“ajQuery4”输出了。。这是为什么呢??

正在回答

5 回答

function () {

    /* code */  

}

这是函数申明, 后面直接加()是语法错误的


var o = function () {


}();

在"="后function, 这样是表达式, 才可以执行


加括号是把函数声明放到一个块中

(function () {

    alert("ok");

})();

0 回复 有任何疑惑可以回复我~

这个自执行我感觉会用,但还是不太理解,看了一下讲义上的说法:

    “jQuery使用()将匿名函数括起来,然后后面再加一对小括号(包含参数列表),那么这小括号能把我们的表达式组合分块,并且每一块(也就是每一对小括号),都有一个返回值。这个返回值实际上也就是小括号中表达式的返回值。所以,当我们用一对小括号把匿名函数括起来的时候,实际上小括号返回的,就是一个匿名函数的Function对象。因此,小括号对加上匿名函数就如同有名字的函数般被我们取得它的引用位置了。所以如果在这个引用变量后面再加上参数列表,就会实现普通函数的调用形式。” 


还是不太懂!


看到上面小鸟说的“在function前加上一个+  让其成为表达式  就可以执行了”我感觉就是上面讲的那个意思。但是我没搞明白,因为我第一次看到匿名函数的时候有这么个想法:


如果"()"可以当做变量名的话,是不是可以这么理解呢? 

var () = function(){alert("ok")}; ()();

这样就跟自执行是一样的了;


感觉应该是不对的,谁能帮我解释一下这个表达式怎么就可以执行了呢?!!!

0 回复 有任何疑惑可以回复我~

function(){}();这样是不行的,因为找不到这个匿名函数,假如有很多个匿名的函数的话,浏览器上哪知道你要执行的是哪一个呢,所以要给它命名才能找到它,例如:var fun1 = function(){alert("ok")}();这样就是对的.再一个就是自执行函数:(function(){alert("ok")})(); 

0 回复 有任何疑惑可以回复我~

函数不能这样执行   你可以加括号或者在function前加上一个+  让其成为表达式  就可以执行了

0 回复 有任何疑惑可以回复我~

语法错误,匿名函数立执行 ()() ,函数需要括号。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信