这是什么意思 !! (不是)在javascript中以及何时使用它

时间:2017-09-06 21:03:16

标签: javascript

我尝试阅读pandajs游戏引擎的代码并根据github中的代码:

playMusic: function(name, loop) {
    var volume = this.musicMuted ? 0 : this.musicVolume;

    if (typeof loop === 'undefined') loop = true;

    if (this.currentMusic) this._stop(this.currentMusic);

    this.currentMusic = this._play(name, !!loop, volume);
    this.currentMusicName = name;

    return !!this.currentMusic;
}

并且它返回!!this.currentMusic我试图解决它,但我不明白他为什么使用它。例如这段代码:

function a(arg){
  console.log(!!arg);
}

a(true)
a(false)

如果我传递true它的打印为true,如果我传递false则打印为false,那么为什么不返回this.currentMusic而不是!!this.currentMusic或在我的示例中只返回console.log(arg)而不是{{} 1}}

1 个答案:

答案 0 :(得分:2)

它将对象强制为布尔值,如果它为null,则为undefined等,否则为false

let x = null;
let y = 1;
console.log(!!x);
console.log(!!y);