任何人都可以解释下面的声明

时间:2015-11-17 13:48:46

标签: javascript

<script>
    function AvoidSpace(event) {
        var k = event ? event.which : window.event.keyCode;
        if (k >= 42 && k <= 57 || k == 32 || k == 61 || k == 13) return false;
    }

    function ExceptNumber(event) {
        var k = event ? event.which : window.event.keyCode;
        if (k >= 0 && k <= 47 || k >= 58 && k <= 122) return false;
    }

    function NumChar(event) {
        var k = event ? event.which : window.event.keyCode;
        if (k >= 0 && k <= 31 || k >= 33 && k <= 64 || k >= 91 && k <= 96) return false;
    }

    function clearFunction() {
        document.getElementById('register').reset();
    }
</script>

我怀疑是: var k =事件? event.which:window.event.keyCode;

我对上述陈述感到困惑。有一点可以肯定的是,上述声明仅用于事件验证。我没有得到解释。任何人都可以帮助我找出上述声明的实际内容吗?仅在JAVASCRIPT

中寻求简要说明

4 个答案:

答案 0 :(得分:3)

k = event ? event.which : window.event.keyCode

表示if you passed event variable to function use it; Else - use global event

它的三元运营商,可以扩展到

if (event == true) {
    k = event.which;
} else {
    k = window.event.keyCode;
}

它将返回按下的键(整数值;键码)

答案 1 :(得分:1)

此语法:

expression ? value1 : value2;

被称为三元运算符。如果表达式为true,则返回value1,否则返回value2。在这种情况下,对象(事件)用作表达式,因此它将评估它是否存在(非空)。

答案 2 :(得分:1)

有些浏览器使用keyCode,其他浏览器则使用keyCode。 该指令仅用于跨浏览器问题,用于在按键和键盘事件期间检索关键代码

答案 3 :(得分:0)

event ? event.which : window.event.keyCode;

这是一个三元运营商。如果问号前面的东西是真的,或者&#34; truthy,&#34;它返回冒号前的表达式;如果它是假的或'假的,'#34;它返回后面的表达式。

如果event被定义(即,它被传递到函数中),它将是&#34; truthy,&#34;这意味着即使它不是布尔类型,也可以作为布尔值进行求值。

这样做是检查event是否已传入函数,并将k设置为event.which(导致事件的密钥代码),如果传入,或者来自全局window事件的密钥代码,否则作为后备。