讀JS代碼遇到一段看不懂運算優先級的代碼,如下
var BrowserSys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/msie ([\d.]+)/)) ? BrowserSys.ie = s[1] : (s = ua.match(/firefox\/([\d.]+)/)) ? BrowserSys.firefox = s[1] : (s = ua.match(/chrome\/([\d.]+)/)) ? BrowserSys.chrome = s[1] : (s = ua.match(/crios\/([\d.]+)/)) ? BrowserSys.chrome = s[1] : (s = ua.match(/opera.([\d.]+)/)) ? BrowserSys.opera = s[1] : (s = ua.match(/version\/([\d.]+).*safari/)) ? BrowserSys.safari = s[1] : 0;
經查證三目運算符是右結合性的, 如 a ? b : c ? d : e ? f : g 根據運算優先級等價於 a ? b : (c ? d : (e ? f : g )),故以上JS代碼運算順序亦可知。