谁能解释一下下面的说法吗

问题描述 投票:0回答:4
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();
}

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

我对上面的说法感到困惑。有一点可以肯定的是,上述声明仅用于事件验证。我没有得到解释。任何人都可以帮我找出上述声明的实际作用吗?仅寻求

JAVASCRIPT
的简短解释

javascript
4个回答
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
投票

这个语法:

expression ? value1 : value2;

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


1
投票

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


0
投票
event ? event.which : window.event.keyCode;

这是一个三元运算符。如果问号之前的内容为真或“真实”,则返回冒号之前的表达式;如果为 false 或“falsey”,则返回后面的表达式。

如果

event
被定义(即,它被传递到函数中),它将是“true”,这意味着如果计算为布尔值,即使它不是布尔类型,它也是 true。

因此,它的作用是检查

event
是否已传递到函数中,如果已传递,则将
k
设置为
event.which
(引发事件的关键代码),或者设置为全局中的关键代码否则,将
window
事件作为后备。

© www.soinside.com 2019 - 2024. All rights reserved.