<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #### 一、值類型轉換 ``` var a = 42; var b = a + ""; //隱式 var c = String(a); //顯式 ``` #### 二、抽象值操作 JSON.stringify對于number、boolean、null來說相當于是toString,而對于undefined、function來說會返回undefined,對于string來說會在原來的基礎上再套上""(`""a""`)。如果function和undefined是在數組中的話,則數組的該位置會變成null而不是undefined以保證數組單元的位置不變 JSON.stringify接收第二個參數,可以是數組或函數,表示哪些屬性應該被處理 ``` var a = {b: 1, c: 2, d: 3}; JSON.stringify(a, ["b", "d"]); //"{"b":1, "d":3}" JSON.stringify(a, function(k, v){ if(k !== "c") return v; }); //"{"b":1, "d":3}" ``` ``` Number() true -> 1 false -> 0 undefined -> NaN null -> 0 "" -> 0 [] -> 0 {} -> NaN ``` ``` Boolean() undefined -> false null -> false "" -> false 0(+-) -> false NaN -> false //其余都是true ``` #### 三、顯示轉換 字符串和數字 ``` String(n); Number(str); n.toString(); +str; 5+"3" -> "53" 5+ +"3" -> 8 //+"3"變為了3,由于++是運算符,5++3會報錯,因此用空格區分 ``` 日期轉換為數字 ``` +d -> n //相當于getTime Date.getTime(); Date.now(); ``` ~x相當于-(x+1) 顯式解析數字字符串 ``` var a = "42"; var b = "42px"; Number(a); //42 Number(b); //NaN //parseInt參數只能是str,否則變成NaN(先強制轉換成字符串再嘗試parseInt) parseInt(a); //42 parseInt(b); //42 ``` 顯示轉換為boolean ``` !!v 等價于Boolean(v) ``` #### 四、隱式轉換 字符串和數字 +的定義為:左右兩方均為數字則執行數字操作,否則先將兩方toSring再相加(如果兩方均為boolean的話直接按0或1運算,否則boolean將變為string類型) ``` [1, 2] + [3, 4]; //1,23,4 [1, 2] + {}; //1,2[object Object] [1, 2] + function(){}; //1,2function(){} true + true; //2 false + function(){}; //falsefunction(){} ``` -的定義為:兩方均先toString,再Number,再相減 ``` [1] - [3]; //-2 [1, 2] - [3, 4]; //NaN ``` ||和&& ``` c = a || b 相當于c = a ? a : b c = a && b 相當于c = a ? b : a //而if(a || b)其實就是 var a = 11, b = 12; a || b -> 11 || 22 -> 11 -> true -> if(true) ``` #### 五、寬松相等和嚴格相等 ==比較的是值,===比較的是值和類型這句話是錯的。實際上,==允許在相等比較中進行強制類型轉換,而===不允許。你可以理解為,==號是想方設法地將二者強制類型轉換以達到相等的目的。(`42 == [42] -> true`) 比較中的特殊操作 NaN不等于NaN,-0等于+0 1. 雙方均為引用類型,則比較地址 2. boolean和其他類型作比較時,都是將boolean進行Number操作,而不是將其他類型進行Boolean操作。然后,想方設法地強轉另一方讓其與0|1相等。 3. 只有null和undefiend這兩個相互比較或自比較結果為true,否則任何其他類型和這兩個比較返回均為false 4. string與string比,number與number比,boolean與boolean比,不進行任何強轉 Object(n)如果n為null或undefined則返回{},否則的話調用n的封裝函數 ``` 別忘了==是想方設法通過強轉讓兩方相等 false == ""; //true -> 0 == "" -> 0 == 0(Number("")) false == []; //true -> 0 == ""(String([])) -> 0 == 0(Number("")) false == {}; //false //!的優先級高于==,因此先進行!操作 [] == ![]; //true -> [] == !true(Boolean([])) -> [] == false -> true ``` < 和 > 如果一方為數字,則想方設法將另一方強轉為數字,否則,想方設法將雙方強轉為字符串。如果雙方均為引用類型,則比較地址 <=和>= a<=b相當于!(b>a) a>=b相當于!(a<b) 這與我們理解的小于或等于以及大于或等于不同,記住!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看