Я возвращаюсь к веб-разработке и недавно пытался разобраться в нюансах jscript. Я лил исходники библиотеки расширений THREEx, построенной поверх Three.JS, и заметил эту функцию
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, и в их списке логических операторов нет этого. Я не уверен, что это написано с ошибкой, и браузеры просто считают это != или это имеет какое-то другое значение. Также мне было интересно, является ли это на самом деле одним логическим оператором или это какая-то комбинация, например ! + ==?