JavaScript函数有括号无括号问题

window.onload=init();functioninit(){vara=show();}functionshow(){alert("TEST");}如上代码运行... window.onload = init();
function init(){
var a = show();
}
function show(){
alert("TEST");
}
如上代码运行显示"Test"
如果把init()的括号去掉依旧显示"TEST"
但是把show()的括号去掉却没有显示
这该如何解释?
我知道函数可以赋值给var,开始我理解为show是直接赋值函数本身,而show()是赋值函数的返回值,但是看init与init()都可以运行又觉得困惑,希望老鸟解答,万分感谢!
书上这么说 但是觉得没加()怎么会运行 我暂且理解为WINDOW.ONLOAD的特殊性吧
展开
 我来答
jas2124
2013-06-18 · TA获得超过197个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:117万
展开全部
这么解释吧
函数加了括号就是调用,运行。

不加括号的函数名,是被当做参数传递的,不运行的,除非被调用。
你的例子里onload是页面加载完执行init,init是应该不加括号的,作为函数参数。假如加了括号那就意味着执行了init函数然后会返回值,但是onload后没有拿到init()所返回的任何东西,事件注册失败了,所以会报错 “尚未实现...”之类的。

希望对你有用。
乌微月2S
2013-06-18 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2856万
展开全部
你的意思是?
window.onload = init;依旧能运行。

var a = show ;就不显示是吧。
追问
对的
init()/show()运行
init/show()运行
init()/show不运行
我就不知道什么区别,难道因为window的onload属性特殊?
追答
这个不好理解吧。

window.onload = init 是吧init看成一个方法。

var a = show();是调用方法show(),然后返回值给a,这里的a应该是undefined。

var a=show;则是给方法a指定一个方法。
并没有调用show。当你new init().a();的时候会执行show方法。
这个和js中function即是类又是方法。
里面的属性和方法也不大分的清有关。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pansonphy
2013-06-18
知道答主
回答量:37
采纳率:0%
帮助的人:22.7万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式