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