Что означает «!» оператор означает в javascript, когда он используется с небулевой переменной?

При чтении кодов javascript я видел ! Оператор, используемый для небулевых переменных. Вот пример кода, не использованного в.

/**
 * loads a resource from a url
 * @param {string} url the url of the resource to load
 * @param {string} relativeTo the url to load relative to
 * @param {function} callback thefunction to call once the file is loaded
 * @private
 */
 GLGE.Wavefront.prototype.loadFile=function(url,relativeTo,callback){
    if(this.relativeTo && !relativeTo) relativeTo=this.relativeTo; //<-- used on a string?
    else this.relativeTo=url;
    if(!callback) callback=this.loaded;    //<-- used on a function?
    var req = new XMLHttpRequest();
    if(req) {
               // request handling code                
            }
        };
        req.open("GET", url, true);
        req.send("");
    }   
}

В этой библиотеке я видел много случаев использования этого оператора таким образом.

Может ли кто-нибудь объяснить, как / если функция «не» строки, объекта или функции может быть определена, если она не является одной половиной логического набора, такого как набор; истина и ложь ?

13
задан deztructicus 9 August 2011 в 16:07
поделиться