【发布时间】:2013-11-12 22:50:39
【问题描述】:
谁能给我解释一下这个 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,'-?'];
【问题讨论】:
-
它表示如果 M 为真,M 将被重新分配给 [M[1], M[2]] 或者 M 将被重新分配给 [N, navigator.appVersion,'-?'];
-
如果你能解释一下这个函数的上下文可能会有所帮助。不难看出它的作用,但如果我们知道为什么,解释可能会得到改进。
-
知道了!这是一个很好的解释。
-
已经足够好了。这是为了检测浏览器。我只是想知道它的作用,因为我不太懂速记表达。无论如何,谢谢!
标签: javascript shorthand