一行上的JavaScript赋值和条件
我正在关注HTML5游戏书中的一些代码,不明白这行代码是如何工作的-一行上的JavaScript赋值和条件,javascript,Javascript,我正在关注HTML5游戏书中的一些代码,不明白这行代码是如何工作的- mp3Support = "" != audio.canPlayType('audio/mpeg'); 我发现它的意思和- if(audio.canPlayType('audio/mpeg') != "") { mp3Support = audio.canPlayType('audio/mpeg'); } 但我似乎不知道这是怎么回事。如何将mp3Support变量分配给空字符串,然后测试它是否不等于同一行中的某个
mp3Support = "" != audio.canPlayType('audio/mpeg');
我发现它的意思和-
if(audio.canPlayType('audio/mpeg') != "") {
mp3Support = audio.canPlayType('audio/mpeg');
}
但我似乎不知道这是怎么回事。如何将
mp3Support
变量分配给空字符串,然后测试它是否不等于同一行中的某个值?我以前从未遇到过这种情况,这让我感到困惑。mp3Support
最终要么是真的,要么是假的,就像x!=y
返回true或false
效果相同,但比文字短
if(audio.canPlayType('audio/mpeg') != "") mp3Support = true;
else mp3Support = false;
mp3Support=”“!=canPlayType('audio/mpeg')代码>
可以写成
mp3Support=(“”!=audio.canPlayType('audio/mpeg')代码>
最后一部分返回true或false。代码=代码>运算符不是赋值运算符,它是一个。因此,在=
的右侧(总是在=
操作符赋值之前执行),代码将audio.canPlayType('audio/mpeg')
的返回值与空字符串进行比较。如果返回值是空字符串(或任何其他假值,但您应该阅读上面的比较运算符链接以了解详细信息),则=
语句右侧的计算结果为false
。否则,右侧将计算为true
。然后将该比较产生的布尔值指定给mp3Support
,如果使用mp3Support=(“”!=audio.canPlayType('audio/mpeg'),它可能有助于您进行读取代码>顺便说一句,你的两个例子不一样。第一个设置mp3Support
为真/假,而第二个设置mp3Support
为“可能”或“可能”。我会使用var mp3Support=!!音频播放类型(“音频/mpeg”)
,它根据audio.canPlayType(“audio/mpeg”)
不是空字符串,将mp3Support
设置为真/假。感谢所有的答案,我现在明白了,并看到了两个代码块之间的差异,干杯。如果你指的是我删除的评论,我错读了OP。对我来说,首先,我不会使用该代码-我认为您需要audio.canPlayType('audio/mpeg')
的结果,而不仅仅是如果它不等于“
”。不管怎样,我的bad@Bergi我认为代码应该使用后一个操作数。但这不取决于我或OP。我只是过多地研究了它的含义,而不是代码的实际内容。此外,我也不知道为什么,但我希望canPlayType
返回真/假(即使OP与“
”),但它返回“可能”或“可能”(意思是“是”),或“”(意思是“否”)。因此OP中的代码修复了我最初担心的问题:)