请帮帮我呀

archer123 2003-01-27 11:41:14
请问大侠下面的代码中duihua是一个无参数的函数
为什么它的后面不打括号?
只要一打括号就出错为什么呀?
"window.onresize=duihua;"

还有象下面的条件语句,其中prefs是定义的一个window方法
有这样写条件语句的吗,为什么?
"if (prefs) {...}"

...全文
89 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
emu 2003-01-27
  • 打赏
  • 举报
回复
在html代码中间写事件响应函数是要加上括号,因为浏览器会试图用 “onEventName=” 后面的字符串来生成一个新的函数再吧事件指向该函数。
在js代码中间写响应函数则不加括号,因为js引擎试图直接事件指向 “onEventName=” 后面的函数对象。

看看下面的例子:
<button onclick="alert('test1')">test1</button>
<button id=test2>test2</button>
<button id=test3>test3</button>
<script defer>
test2.onclick=new Function("alert('test2')");
function test_3(){
alert("test3");
}
test3.onclick=test_3;
</script>
zxhong 2003-01-27
  • 打赏
  • 举报
回复
如果该方法返回的是boolean型(true,false)是可以的
emu 2003-01-27
  • 打赏
  • 举报
回复
要返回结果就加括号,要函数对象就不加。
archer123 2003-01-27
  • 打赏
  • 举报
回复
函数返回的结果和一个函数对象哪种情况下加括号?
archer123 2003-01-27
  • 打赏
  • 举报
回复
可以就具体情况多举几个例子对照说明一下吗
非常感谢大侠!
archer123 2003-01-27
  • 打赏
  • 举报
回复
emu(ston) 大侠可以再详尽说明下
是否只有是事件响应函数的时候才这样处理?
对于一般类型的函数也一样吗?
还能这样用吗?
emu 2003-01-27
  • 打赏
  • 举报
回复
要看具体情况。
要区分一个地方到底是需要一个函数返回的结果,还是需要一个函数对象。
archer123 2003-01-27
  • 打赏
  • 举报
回复
是否只有是事件响应函数的时候才这样处理?
对于一般类型的函数也一样吗?
还能这样用吗?
emu 2003-01-27
  • 打赏
  • 举报
回复
那是因为你还没吃透呀。看看下面的test4:

<BODY>
<button onclick="alert('test1')">test1</button>
<button id=test2>test2</button>
<button id=test3>test3</button>
<button id=test4>test4</button>
<script defer>
test2.onclick=new Function("alert('test2')");
function test_3(){
alert("test3");
}
test3.onclick=test_3;
function test_4(){
return new Function('alert("test4");');
}
test4.onclick=test_4();
</script>
</BODY>

仔细想想我为什么这么写。
archer123 2003-01-27
  • 打赏
  • 举报
回复
为什么将下面的一行代码改为 test3.onclick=test_3();会报错呀
对于无参数函数是可以加上小括号的呀.
请大侠赐教
请大侠赐教
请大侠赐教
请大侠赐教
zxhong 2003-01-27
  • 打赏
  • 举报
回复
不好意思,我说错了
emu大侠说的对
archer123 2003-01-27
  • 打赏
  • 举报
回复
为什么将下面的一行代码改为 test3.onclick=test_3();会报错呀
对于无参数函数是可以加上小括号的呀.
请大侠赐教
emu 2003-01-27
  • 打赏
  • 举报
回复

--------------------------------------------------------
还有象下面的条件语句,其中prefs是定义的一个window方法
有这样写条件语句的吗,为什么?
"if (prefs) {...}"
--------------------------------------------------------

这句的意思是,如果prefs已经被定义(非null非false)则条件满足。跟prefs的返回类型无关。

<SCRIPT LANGUAGE="JavaScript">
<!--
function test(){if (prefs) alert("prefs is defined and is not false !"); else alert("prefs is not defined yet or is defined as false!");}

function prefs(){};
test();

prefs=null;
test();

prefs=1;
test();

prefs=false;
test()

prefs=true;
test();

//-->
</SCRIPT>

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧