<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之旅 廣告
                ## 2.4 數據類型 ECMAScript中有5種簡單數據類型(基本數據類型):`Undefined`、`Null`、`Boolean`、`Number`和`String`。還有1種復雜數據類型--`Object`,`Object`本質上是由一組無序的名值對組成的。 注:在ES6中新增了Symbol。 **2.4.1 typeof操作符** `typeof`操作符用來檢測給定變量的數據類型,可能的返回值: ``` "undefined" 這個值未定義 "boolean" 這個值是布爾值 "string" 這個值是字符串 "number" 這個值是數值 "object" 這個值是對象或null "function" 這個值是函數 ``` 例子: ``` var name = 'tg'; console.log(typeof name); // "string" console.log(typeof (name)); // "string" console.log(typeof {}); // "object" ``` `typeof`是一個操作符,后面的圓括號可有可無。 **2.4.2 Undefined類型** `Undefined`類型只有一個值,即特殊的`undefined`。 如果在使用`var`聲明變量但未對其加以初始化時,這個變量的值就是`undefined`。 ``` var name; console.log(name == undefined); // true ``` 對于未聲明過的變量,只能執行一項操作,即使用`typeof`操作符檢測其數據類型(對未聲明的變量調用`delete`不會導致錯誤(在非嚴格模式下)) **2.4.3 Null類型** `Null`類型也是只有一個值的數據類型,這個特殊值就是`null`。`null`值可以看作是一個空對象指針。 ``` console.log(typeof null); // "object" ``` `undefined`其實是派生自`null`值: ``` console.log(null == undefined); // true ``` 注意:null和undefined沒有屬性,甚至連toString()這種標準方法都沒有。 **2.4.4 Boolean類型** Boolean類型有兩個字面值:true和false,兩個值是區分大小寫的。 要將一個值轉換為其對應的Boolean值,可有使用轉型函數Boolean(): ``` var name = 'tg'; console.log(Boolean(name); // true ``` 可以對任何類型的值調用Boolean函數,而且總會返回一個Boolean值(true或false) **轉換規則**: - 對于true或false,返回原值(true或false) - 對于String類型的值,任何非空字符串返回true,空字符串("")返回false - 對于Number類型的值,任何非零數字值(包括無窮大),返回true;0和NaN返回false - 對于Object類型的值,任何對象返回true,null返回false - 對于Undefined類型,undefined返回false(只有一個值) **2.4.5 Number類型** 最基本的數值字面量格式是十進制整數。 ``` var num = 15; ``` 八進制(以8為基數) 以0開頭,后面是(0~7) ``` var num = 070; // 八進制的56 ``` 十六進制(以16為基數) 以0x開頭,后面是(0~9及A~F),字母A~F可以大小寫。 ``` var num = 0xA; //十六進制的10 ``` 注意:在進行算術計算時,所有以八進制和十六進制表示的數值都會被轉換成是十進制。 **1.浮點數值** `浮點數值`指包含一個小數點,并且小數點后面必須至少有一個數字。 ``` var floatNum = 1.1; ``` 保存浮點數值需要的內存空間是保存整數值的兩倍。 對于那些極大或極小的數值,我們可以使用科學計數法(e表示法)來表示浮點數值。 e表示法表示的數值等于e前面的數值乘以10的指數次冪: ``` var floatNum = 3.125e7; // 31250000 var floatNum1 = 3e-7; //0.0000003 ``` 默認情況下,ECMAScript會將那些小數點后面帶有6個零以上的浮點數值轉換為以e表示的數值。 ``` var floatNum1 = 3e-7; //0.0000003 ``` 浮點數的最高精度是17位小數。 ``` 0.1 + 0.2 = 0.3000000000000004; // 不是等于0.3 ``` **2.數值范圍** 基于內存的限制,ECMAScript只能保存有限的數值。 ECMAScript能夠表示的最小數值保存在`Number.MIN_VALUE`(最小值)中,這個值是5e-324;能夠表示的最大數值保存在`Number.MAX_VALUE`(最大值)中,這個值是1.7976931348623157e+308. 如果某次計算的結果得到了一個超出JavaScript數值范圍的值,那么這個數值就會被轉換成特殊的`Infinity`值;如果這個值是負數,則會被轉換為-`Infinity`(負無窮),如果這個數值是整數,則會轉換成`Infinity`(正無窮)。 注意:Infinity是不能參與計算的數值。 用`isFinite()`來判斷這個值是否無窮,該函數接受一個參數。如果參數位于最小與最大數值之間,返回true。 ``` console.log(isFinite(1)); //true console.log(isFinite(Infinity)); // false ``` **3.NaN** NaN(Not a Number)表示非數值,這個數值用于表示一個本來要返回數值的操作數未返回數值的情況。 注意點: - 任何涉及NaN的操作都會返回NaN。 - NaN與任何值都不相等,包括NaN本身。 ``` console.log(NaN == NaN); //false ``` 我們可以用`isNaN()`函數來判斷是否非數值,該函數接受一個參數,可以是任何類型。 ``` console.log(isNaN(NaN)); // true ``` `isNaN()`在接收到一個值(可以是任何類型)之后,會嘗試將這個值轉換為數值,某些不是數值的值會直接轉換為數值,比如:字符串"10"或Boolean值。而任何不能被轉換為數值的值都會導致這個函數返回true。 ``` console.log(isNaN(NaN)); // true console.log(isNaN(10)); // false console.log(isNaN('blue')); // true ``` **4.數值轉換** 有3個函數可以把非數值轉換為數值:`Number()`、`parseInt()`和`parseFloat()` 轉型函數`Number()`可以用于任何數據類型,后面兩個是專門用于把字符串轉換為數值。 **Number()函數的轉換規則**: - 如果是Boolean值,true和false將分別轉換為1和0 - 如果是數字值,只是簡單的傳入和返回 - 如果是null值,返回0 - 如果是undefined,返回NaN - 如果是字符串,遵循下列規則: ( * 如果是字符串中只包含數字(包括前面帶正負號),則將其轉換為十進制數值(前導的零會被忽略) * 如果字符串中包含有效的浮點格式,如1.1,則將其轉換為對應的浮點數值 * 如果字符串中包含有效的十六進制,如0xf,則將其轉換為相同大小的十進制數值 * 如果字符串是空的,返回0 * 如果字符串中包含上述格式以外的字符,返回NaN ) - 如果是對象,則調用對象的valueOf()方法,然后依照前面的規則轉換返回的值。如果轉換的結果是NaN,則調用對象的toString()方法,然后再次依照前面的規則轉換返回字符串值 ``` console.log(Number('tg')); // NaN console.log(Number('')); // 0 console.log(Number('0011')); // 11 console.log(Number(true)); //1 ``` 一元加操作符的操作與Number函數規則相同。 **parseInt()** `parseInt()`會忽略字符串前面的空格,直到找到第一個非空格字符。如果第一個字符不是數字字符或負號,就會返回NaN。如果第一個字符是數字字符,就會繼續解析,直到解析完所有后續字符或者遇到了一個非數字字符。 `parseInt()`也能識別八進制(在ECMAScript 5中無法識別,將開頭的0當作0)和十六進制,最后會轉換成十進制。 ``` console.log(parseInt('123tg')); // 123 console.log(parseInt('')); // NaN console.log(parseInt('070')); // 70 console.log(parseInt('0xf')); //15 console.log(parseInt(22.5)); // 22 ``` 我們還可以為`parseInt()`提供第二個參數,指定需要轉換的進制。 ``` console.log(parseInt('0xAF',16)); // 175 console.log(parseInt('AF',16)); // 175 console.log(parseInt('AF')); // NaN console.log(parseInt('070',8)); // 56 console.log(parseInt('70',8)); // 56 ``` 如果提供了第二個參數,要轉換八進制和十六進制時,可省略0和0x。 `parseFloat()`和`parseInt()`類似,也是從第一個字符(位置0)開始解析每個字符,而且一直解析到字符串末尾,或者解析到遇到一個無效的浮點數字字符為止,換句話說,字符串中的第一個小數點是有效的,后面的小數點是無效的,它還會忽略前導的零,只會解析十進制值。 ``` console.log(parseFloat('123tg')); // 123 console.log(parseFloat('22.12.4')); // 22.12 console.log(parseFloat('070')); // 70 console.log(parseFloat('0xf')); //0 console.log(parseFloat(22.5)); // 22.5 ``` **2.4.6 String類型** String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號或單引號表示。 ``` var name = 'tg'; ``` 用雙引號表示的字符串和用單引號表示的字符串完全相同,但要確保引號前后一致,也就是說以雙引號開頭的必須以雙引號結尾,以單引號開頭的必須以單引號結尾。 在ECMAScript 3中,字符串直接量必須寫在一行中,而在ECMAScript 5中,字符串直接量可以拆分成數行,每行必須以反斜杠(\)結束。 ``` // ES 5 'Hello \ world' ``` **1.字符字面量** String數據類型包含了一些特殊的字符字面量,也叫轉義序列。 ``` \n 換號 \t 制表 \b 空格 \r 回車 \f 進紙 \\ 斜杠 \' 單引號 \" 雙引號 \xnn 以十六進制代碼nn表示的一個字符(n為0~F),比如:\x41表示"A" \unnn 以十六進制代碼nnnn表示的一個Unicode字符(n為0~F)。比如:\u03a3表示Σ ``` 這些字符字面量可以出現在字符串中的任意位置,會被當做**一個字符**來解析。 ``` var name = 'tg\u03a3'; console.log(name); //tgΣ console.log(name.length); // 3 ``` 任何字符串的長度都可以訪問其length屬性取得。 **2.字符串的特點** ECMAScript中的字符串是不可變的。一旦創建,值就不會改變。 **后臺邏輯**:要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后用另一個包含新值的字符串填充該變量。 **3.轉換為字符串** 要將一個值轉換為字符串有兩種方式: - 使用每個值(null和undefined除外)都有的`toString()`方法 ``` var age = 1; console.log(age.toString()); // "1" ``` 我們還可以給`toString()`傳入一個參數,輸出數值的基數。 ``` var num = 10; console.log(num.toString()); // "10" console.log(num.toString(2)); // 1010 console.log(num.toString(8)); // 12 ``` - 可以使用轉型函數String(),能將任何類型的值轉換為字符串,轉換規則: 如果值有toString()方法,則調用該方法并返回相應的結果 如果值是null,則返回null 如果值是undefined,則返回undefined ``` console.log(String(10)); // "10" console.log(String(true)); // "true" console.log(String(null)); // "null" console.log(String(undefined)); // "undefined" ``` 要把某個值轉為字符串,還可以使用加號操作符: ``` console.log( true + ''); // "true" ``` **2.4.7 Object類型** ECMAScript中的對象其實就是一組數據和功能的集合。 對象可通過執行new操作符后跟創建的對象類型的名稱來創建。 ``` var o = new Object(); ``` 如果不傳參,可以省略后面的圓括號(不推薦)。 ``` var o = new Object; ``` 在ECMAScript中,`Object`類型是所有對象的基礎。 `Object`的每個實例都具有下列屬性和方法: - `Constructor`:保存著用于創建當前對象的函數,比如上面的例子,構造函數就是Object() - `hasOwnProperty(propertyName)`:用于檢查給定的屬性在當前對象實例中是否存在(而不是在實例的原型中),參數必須是字符串形式 - `isPrototypeOf(object)`:用于檢查傳入的對象是否是另一個對象的原型 - `propertyIsEnumerable(propertyName)`:用于檢查給定的屬性是否能夠使用for-in語句來枚舉,參數必須是字符串形式 - `toLocaleString()`:返回對象的字符串表示,該字符串與執行環境的地區對應 - `toString()`:返回對象的字符串表 - `valueOf()`:返回對象的字符串、數值或布爾值表示,通常和toString()返回的值相同
                  <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>

                              哎呀哎呀视频在线观看