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