在angular 源碼中有連寫兩個三元運算符的代碼:
var hash = isString(hash) ? hash : isNumber(hash) ? hash.toString() :$location.hash;
上述代碼等價於:
if(isString(hash)){
return hash;
}else{
if(isNumber(hash)){
return hash.toString();
}else{
return $location.hash;
}
}
驗證代碼如下所示:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>連寫兩個三元運算符的執行順序</title> 6 </head> 7 <body> 8 <!--下面這兩個script 腳本中的自執行匿名函數證明了連寫連個三元運算符的執行順序是從左到右順序執行。--> 9 <script> 10 11 // hash = isString(hash) ? hash : isNumber(hash) ? hash.toString() : $location.hash(); 12 (function (hash) { 13 isString=function (str) { 14 return toString.call(str)=='[object String]'?true:false; 15 } 16 isNumber=function (number) { 17 return toString.call(number)=='[object Number]'?true:false; 18 } 19 20 var hash = isString(hash) ? hash : isNumber(hash) ? hash.toString() :"人生"; 21 alert(hash); 22 })("ouyangfeng"); 23 </script> 24 <script> 25 (function (hash) { 26 isString=function (str) { 27 return toString.call(str)=='[object String]'?true:false; 28 } 29 isNumber=function (number) { 30 return toString.call(number)=='[object Number]'?true:false; 31 } 32 function getHash() { 33 if(isString(hash)){ 34 return hash; 35 }else{ 36 if(isNumber(hash)){ 37 return hash.toString(); 38 }else{ 39 return "人生"; 40 } 41 } 42 } 43 var hash=getHash(hash); 44 alert(hash); 45 })("123"); 46 </script> 47 <style> 48 </body> 49 </html>