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的特殊性吧 展开
function init(){
var a = show();
}
function show(){
alert("TEST");
}
如上代码运行显示"Test"
如果把init()的括号去掉依旧显示"TEST"
但是把show()的括号去掉却没有显示
这该如何解释?
我知道函数可以赋值给var,开始我理解为show是直接赋值函数本身,而show()是赋值函数的返回值,但是看init与init()都可以运行又觉得困惑,希望老鸟解答,万分感谢!
书上这么说 但是觉得没加()怎么会运行 我暂且理解为WINDOW.ONLOAD的特殊性吧 展开
3个回答
展开全部
你的意思是?
window.onload = init;依旧能运行。
var a = show ;就不显示是吧。
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即是类又是方法。
里面的属性和方法也不大分的清有关。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询