问题:下面的代码最后一行
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("正在响应");
};
运行结果:点击一下 会提示 “正在响应”