我尝试阅读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}}
答案 0 :(得分:2)
它将对象强制为布尔值,如果它为null,则为undefined等,否则为false
let x = null;
let y = 1;
console.log(!!x);
console.log(!!y);