JavaScript中的响应函数

    科技2022-07-12  196

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

    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("正在响应"); };

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

    Processed: 0.015, SQL: 8