有人可以向我解释这个JS简写代码:
navigator.sayswho = (function(){
var N= navigator.appName, ua= navigator.userAgent, tem;
var M= ua.match(/(opera|chrome|safari|firefox|msie|Trident)\/?\s*(\.?\d+(\.\d+)*)/i);
if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
return M;
})();
代码正在运行,但我无法理解它是如何工作的,尤其是这一行:
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
答案 0 :(得分:6)
此:
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
表示:
if (M)
M = [M[1], M[2]];
else
M = [N, navigator.appVersion, '-?'];
更详细地说,它检查“M”是否为非空,在这种情况下意味着useragent正则表达式与实际的useragent字符串匹配。如果已设置,则将“M”重置为新数组;实际上,它只会丢弃原始“M”的第0个元素。
如果设置 ,它会从应用程序名称,版本字符串以及看似是标记字符串的内容创建一个“假”数组,以表明它是一个无法识别的用户。
答案 1 :(得分:0)
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
此处M
是boolean type
变量包含true或false
<强>即强>
if(M)
M = [M[1], M[2]];
else
M = [N, navigator.appVersion,'-?'];