js中連寫兩個?:三元運算符語法解釋


在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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM