[英]how to pass the result of an JavaScript function (canPlayType) to an HTML5 video
[英]What is the structure of this JavaScript expression and why does it evaluate to 'true'? (HTML5 audio tag and canPlayType() function)
我正在阅读一本JavaScript / HTML5书,遇到了一个我不理解的表达式。 该代码使用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
我正在使用支持mp3文件的Chrome,因此第三行返回“可能”。 但是,第五行返回“ true”。 在第四行中,将“可能”的值转换为“真”的情况是什么? 遵循此结构的表达式是否有名称?
!=
使用抽象相等比较算法比较表达式,如果它们不同则返回true
如果相等则返回false
。
生产EqualityExpression: EqualityExpression
!=
RelationalExpression的评估如下:
在您的情况下,空字符串""
与字符串"probably"
。 因此,运算符返回true
。
您可能会感到困惑,因为您同时看到赋值运算符=
和比较运算符!=
(不等于)。 这些不一样。 本质上说:
if (audio.canPlayType('audio/mpeg') == "")
mp3Support = false;
else
mp3Support = true;
可以简化为:
mp3Support = !(audio.canPlayType('audio/mpeg') == "")
并再次减少到您看到的内容:
mp3Support = "" != audio.canPlayType('audio/mpeg');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.