JavaScript中的响应函数

问题:下面的代码最后一行

codeBox.onclick = createNumber;    

为什么这行后面的createNumber后面没带括号?

	//生成随机验证码
			var codeBox = document.getElementById('codeBox');
			function createNumber(){
				var number = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
				codeText = "";
				for (var i = 0; i < 4; i++) {
					var oor = Math.floor(Math.random()*62);
					var add = number.charAt(oor);
					codeText += add;
				}
				codeBox.innerHTML = codeText;
			}
			createNumber();
			codeBox.onclick = createNumber;  
			

因为onclick接收的是一个函数,
如果让后边等上一个带括号的函数的时候,浏览器会先识别到等号后边是一个函数,然后先执行这个函数,将函数的返回值赋给一个函数,这显然不是很合适,有点驴头不对马嘴。
如果等号后面是一个不带括号的函数名的话,浏览器会这样做,把等号后面的函数赋给onclick函数将函数赋给函数,这样就好多了它俩很合适。
证明如下:

codeBox.onclick = 
				function(){
				alert("正在响应");
			};

运行结果:点击一下 会提示 “正在响应”


版权声明:本文为qq_43570814原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。