我正在重新开始 Web 开发,最近一直在尝试研究 jscript 的细微差别。我正在仔细研究基于 Three.JS 构建的 THREEx 扩展库的源代码,并注意到这个函数
THREEx.KeyboardState.prototype.pressed = function(keyDesc)
{
var keys = keyDesc.split("+");
for(var i = 0; i < keys.length; i++){
var key = keys[i];
var pressed;
if( THREEx.KeyboardState.MODIFIERS.indexOf( key ) !== -1 ){
pressed = this.modifiers[key];
}else if( Object.keys(THREEx.KeyboardState.ALIAS).indexOf( key ) != -1 ){
pressed = this.keyCodes[ THREEx.KeyboardState.ALIAS[key] ];
}else {
pressed = this.keyCodes[key.toUpperCase().charCodeAt(0)];
}
if( !pressed) return false;
};
return true;
}
我特别关注这里的行:
if( THREEx.KeyboardState.MODIFIERS.indexOf( key ) !== -1 ){
我不熟悉这个 !== 运算符。我检查了 w3schools,他们的逻辑运算符列表中没有包含这个。我不确定这是否拼写错误,浏览器只是将其视为 != 或者它是否有其他含义。我还想知道这实际上是单个逻辑运算符还是某种组合,例如! + ==?
你可以找到===
and !==
其他几种动态类型语言中的运算符也是如此。它始终意味着两个值不仅按其“隐含”值进行比较(即,其中一个或两个值可能会被转换以使它们具有可比性),而且还按其原始类型进行比较。
这基本上意味着如果0 == "0"
返回真,0 === "0"
将返回 false,因为您正在比较数字和字符串。同样,虽然0 != "0"
返回假,0 !== "0"
返回真。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)