函数后面跟()后,返回的是什么? 你函数没有返回值吧。加了()就是执行这个匿名函数了,而不是将匿名函数复制给initPage变量而且要注意变量的作用域 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var initPage = function () { alert("11"); }; $(function(){ $("#btnRefreash").click(function () { initPage(); }); });感觉该这么写呢。。 返回值是函数体的东西啊,var initPage = function () { //methodBody };这个是把整个函数的引用赋值给initPage ,加个() , 就变成了将函数返回值赋值给initPage ?感觉好诡异...作用域应该没问题吧,都在一个作用域内. var initPage = function () { //methodBody }();加上了(),function部分已经执行了,除非function返回的是另一个函数,即initPage是一个函数,才能initPage()执行。你methodBody的代码是怎么样的? 逻辑都变了啊!我原来是初始一次 , btnRefreash按了也执行一次除非再加个 initPage(); 调用,这当然就没问题了... //methodBody 不返回如何东西.代码运行情况我已经知道了,不加() 就是定义一个匿名函数,然后赋值给initpage这个变量,加了后就是执行匿名函数,并将函数返回的结果(void)赋值给initpage这个变量,所以是undefined 就是不太理解为什么这样.感觉这个语法糖已经破坏了语法的统一性了. 你可以这样理解:js中的函数其实是一种数据,与数值,数组和字符串是一样的。一个函数后面的()实际上是执行函数的运算符,和+-*/没有多少区别。这两个好理解吧1)var a = 123;var r = a * 2;2)var a = function () { alert(123); };var r = a();那么1)可以改成var r = 123 * 2;同样的2)也可以改成var r = function () { alert(123); }(); ls的答案很好,这下子理解了,感谢...看来还是对函数式编程这个思维模式不够熟悉.js的函数所代表的概念 比java c#之类的丰富得多 嗯 其实还是可以类比委托,只是js是弱类型,所以initpage既能用函数赋值,又能用函数的返回值赋值,但两者是不同的行为. javascript中怎么取到window对象? 怎么才能得到ajax返回值 运用到其他js方法当中? 求助:js代码为什么不能停止? 高手请进 ACTIVEX的安装过程,如何知道控件已下载完成,准备安装,IE上部出现黄色提示条,说准备安装控件 javascript做的东西在firefox上没有效果 哪位大虾帮帮忙,给100分 大家帮帮忙,我想在输入框中不断滚动显示数组内容,怎么办? 鼠标事件冲突!!!在线等候!!!! 下边程序有何问题?请指教!!! js传值(对象类型数组)给后台方法? 经常用火狐调试js的哥们,问个问题
var initPage = function () {
alert("11");
};
$(function(){
$("#btnRefreash").click(function () {
initPage();
});
});
感觉该这么写呢。。
返回值是函数体的东西啊,
var initPage = function () {
//methodBody
};
这个是把整个函数的引用赋值给initPage ,
加个() , 就变成了将函数返回值赋值给initPage ?
感觉好诡异...作用域应该没问题吧,都在一个作用域内.
var initPage = function () {
//methodBody
}();加上了(),function部分已经执行了,除非function返回的是另一个函数,即initPage是一个函数,才能initPage()执行。
你methodBody的代码是怎么样的?
逻辑都变了啊!
我原来是初始一次 , btnRefreash按了也执行一次
除非再加个 initPage(); 调用,这当然就没问题了...
代码运行情况我已经知道了,
不加() 就是定义一个匿名函数,然后赋值给initpage这个变量,
加了后就是执行匿名函数,并将函数返回的结果(void)赋值给initpage这个变量,所以是undefined
就是不太理解为什么这样.
感觉这个语法糖已经破坏了语法的统一性了.
你可以这样理解:
js中的函数其实是一种数据,与数值,数组和字符串是一样的。一个函数后面的()实际上是执行函数的运算符,和+-*/没有多少区别。
这两个好理解吧
1)var a = 123;
var r = a * 2;2)var a = function () { alert(123); };
var r = a();
那么1)可以改成var r = 123 * 2;同样的2)也可以改成var r = function () { alert(123); }();
只是js是弱类型,所以initpage既能用函数赋值,又能用函数的返回值赋值,
但两者是不同的行为.