我正在阅读一本JavaScript/HTML5 5书,并遇到了一个我不明白的表达式。代码使用JavaScript的.canPlayType()函数来检查浏览器是否支持给定的HTML5音频格式(在本例中是检查mp3支持)。我感到困惑的具体表达是在第四行:
var audio = document.createElement('audio');
var mp3Support;
console.log(audio.canPlayType('audio/mpeg')); // returns probably
mp3Support = "" != audio.canPlayType('audio/mpeg');
console.log(mp3Support); // returns true我使用的是Chrome,它支持mp3文件,所以第三行返回“可能”。然而,第五行返回“true”。将“可能”的值转换为“真”的第四行发生了什么?是否有符合此结构的表达式的名称?
发布于 2015-05-26 23:23:11
您可能会感到困惑,因为您看到赋值运算符=和比较运算符!= (不等于)。这些是不一样的。它的主要意思是:
if (audio.canPlayType('audio/mpeg') == "")
mp3Support = false;
else
mp3Support = true;可简化为:
mp3Support = !(audio.canPlayType('audio/mpeg') == "")再一次沦为你所看到的:
mp3Support = "" != audio.canPlayType('audio/mpeg');发布于 2015-05-26 23:19:44
!=比较使用抽象等式比较算法的表达式,如果它们不同则返回true,如果它们相等则返回false。
11.9.2不等于运算符( != ) 产品EqualityExpression : EqualityExpression
!=RelationalExpression的评估如下:
在您的示例中,空字符串""与字符串"probably"不同。所以操作符返回true。
https://stackoverflow.com/questions/30470535
复制相似问题