JavaScript中为什么调用自己写的方法时有时候需要带括号(),有时候却不可以带呢?

探讨了JavaScript中如何利用键盘事件实现代码执行,重点解析了函数调用时加括号与否的区别,以及其背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//2019.3.2 下午   没有最好的程序,只有更好的程序。

当时第一次遇到这样的问题时,真的是纠结了好半天,虽然程序丢了括号,成功运行了,但是我还是觉得弄懂其中的原理心里才能罢休!

看下列程序:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div>
			<h5>1.被称为国球的运动是___。</h5>
			<p>A.乒乓球</p>
			<p>B.足球</p>
			<p>C.篮球</p>
		</div>
	</body>
	<script type="text/javascript">
		function test(){
			if(window.event.keyCode==65){   //A的键盘序号为65
				alert("答案正确!");
			}else{
				alert("答案错误!正确答案为A!");
			}
		}
		document.onkeydown=test;  //此处test没有加括号();
	</script>
</html>

 程序解释:以上程序,是一个简单的用键盘事件来执行代码的程序。内容为一个选择题,题目答案为A,也就是说,当我们按下键盘上的A键时,提示答案正确,否则提示答案错误。

程序剖析:观察最后带有注释的一行,在我们调用新构造的test方法时,没有加括号,如果加括号了,程序会报错。为什么呢?

个人总结:

解释1:

函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是直接得到函数的结果,因为不会运行函数体代码。但是得到的是整个函数,让函数直接去运行。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。

解释2:

一般构造函数不加(),具体原因是当将某个事件(如onclick)调用自己构造的函数时,内部原理是把这个函数赋值给了这个事件,要的是这个函数不是要返回值,然后这个事件就相当于成为了这个函数,每次事件发生时即就是这个函数发生。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值