如何解释代码var charCode = (evt.which) ? evt.which : event.keyCode
?
这里发生了什么?
我理解的是,该子句将按钮值返回给对象charCode。
那些是什么?和:标志意味着什么?
我可以在其他语言中使用这个东西吗? java / c ++ / php等等?
感谢
答案 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
?
左侧是条件。右侧是由:
分隔的结果。如果条件为真,则使用冒号左侧的结果,否则它就是右侧的结果。