猿问

window.onload=方法名();方法名后面的括号加与不加的区别?

有时候加就可以,有时候加就不可以。为什么?

慕数据9668469
浏览 6689回答 13
13回答

李晓健

给一下两种情况下的示例代码,我觉得应该是不加的  除非这么写 window.onload=function(){ xxxxxx };

水秋玄

先来看一下代码:<body onload="hello();"> <script type="text/javascript"> function hello(){ alert("Hello"); } </script> </body>body里面的onload="hello()",此时如果你不加括号,它就变成一个字符串,没有意义。实际上写在html标签里的js代码是一种伪协议,可以写成这样<body onload="javascript:hello();">,只不过是省略写法而已,通过识别后面的括号来调用函数才能执行。比如:<body onload="(function(){alert(123)})()"><!--这样可以执行,其中括号的方式表示立即执行此匿名函数--> <body onload="function(){alert(123)}"><!--这样不可以执行,因为后面没有括号,它只是一个字符串-->以上是行内代码调用函数为什么要加括号的原因。下面再看一段代码:function hello(){ alert("Hello"); } window.onload = hello;这里的window.onload调用函数是不用加括号的,加了括号可以成功的原因是因为通常我们把JS代码都放到了最后面,页面也已经加载完了,或者没有涉及到页面对象的操作情况,所以才没有报错。可以看看这个错误的例子:<script type="text/javascript"> function hello(){ var a = document.getElementById("text"); a.innerHTML = "Hello"; } window.onload = hello();//这种情况就会报错了,因为JS是先执行后才加载下面的文档内容。你把DIV放到JS代码块前就不会报错。 </script> <div id="text"></div>为什么会这样呢,因为window.onload = hello()这种赋值的语句的从右到左,也就是先执行了hello(),然后把hello函数执行结果(如果右return的话)赋值给window.onload,跟你直接写hello()没什么区别。所以严格来说window.onload要调用的函数是不能加括号的,避免错误。window.onload是一个事件,它表示在页面加载完后执行它指向的代码,所以不需要给函数加括号去调用,页面加载完会自动去调用。function hello(){     alert("Hello"); } window.onload = hello; //上面的代码完全等价于下面的代码 window.onload = function hello(){//但是这样写的话就没必要给函数命名,因为其他地方没有调用到     alert("Hello"); }

紫色往年

不加括号是方法的声明,加了括号是方法的调用;例如:var  init = function(){};//声明init();//调用

NY24

加括号表示调用,函数立刻执行;不加括号表示函数的引用赋值,即当符合条件时才会执行;

zhangcl

window是浏览器类自带的对象,这个onload是window的一个属性,这个属性表现为一个function,你可以看一下js类的写法。也就是说window有一个默认的onload方法。上面的写法就是在重写onload方法,类似于java里面的匿名方法。表示页面加载完所有的文件后,执行此方法。onload本身只是一个变量,不具有任何实际的意义,所以如果要把onload定义为一个方法,那么必须写出具体的方法体:window.onload=function(){//方法体},这样才是完整的声明方式;换一种理解方式,如果onload是一个值,那么你就必须写成window.onload="abc";道理都是一样的,只看怎么理解,唯一的区别就在于js的属性对象可以定义为function。

qq_小鱼肉_0

加括号是匿名函数了  意思是把定义的不加括号函数,和函数调用 2段写为一段了 才产生了这样的情况

vincent_chao

来学习一下,等待消息

早安思嘉

在函数后面加一个()是属于匿名函数的一种,可用用来加载时就需要立即执行的代码~

慕女神

方法名后面的括号加与不加的区别很大。

i爱慕客

不太确定
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答