javascript var charCode =(evt.which)? evt.which:event.keyCode;

时间:2012-02-16 20:03:20

标签: javascript

如何解释代码var charCode = (evt.which) ? evt.which : event.keyCode? 这里发生了什么? 我理解的是,该子句将按钮值返回给对象charCode。 那些是什么?和:标志意味着什么? 我可以在其他语言中使用这个东西吗? java / c ++ / php等等? 感谢

4 个答案:

答案 0 :(得分:10)

它被称为ternary conditional operator。它基本上是if...else的缩写:

var charCode;
if(evt.which) {
    charCode = evt.which;
}
else {
    charCode = evt.keyCode;
}

基本上,它会计算第一个操作数。如果该评估返回true,则返回第二个操作数。如果false,则返回第三个。

至于你是否可以在其他语言中使用它,你经常可以。从您列出的语言来看,Java和PHP都有它,如果C ++没有,我会非常惊讶(编辑 - 一个快速的谷歌显示C和C ++确实也支持它)。有关更多信息,请参阅Wikipedia

答案 1 :(得分:2)

首先,var charCode =开始分配给本地charCode变量。接下来,使用ternary operator。它由三部分组成,条件,如果它是真的会发生什么,如果它是假的会发生什么。

(evt.which) ? evt.which : event.keyCode
# condition # if true   # if false

在这种情况下,它用于特征检测(键盘键事件)。 evt.which是正确的方法,但在非常旧的浏览器中,您可能希望使用event.keyCode

答案 2 :(得分:2)

其他人正确地指出它是:

的简写
var charCode;
if(evt.which) {
    charCode = evt.which;
}
else {
    charCode = evt.keyCode;
}

但它也适用于:

var charCode = evt.which || evt.keyCode;

答案 3 :(得分:1)

这称为条件运算符。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator

?左侧是条件。右侧是由:分隔的结果。如果条件为真,则使用冒号左侧的结果,否则它就是右侧的结果。