摘要:下表給出了各種數據類型以及對其對應的轉換規則。例如轉換為字符串數值布爾值對象和字符串值調用都會返回字符串的一個副本,但和值沒有這個方法。返回對象的字符串數值或布爾值表示。
數據類型
ECMAScript中有5種簡單的數據類型(也稱基本數據類型)和 一種復雜數據類型(也稱引用類型)
基本數據類型:Undefined、Null、Boolean、Number、String
引用類型:object
1. UndefinedUndefined類型只有一個值,即特殊的undefined。在使用var聲明變量但未對其加以初始化時這個變量的值就是undefined
var message; alert(message == undefined); //true2. Null
Null類型是第二個只有一個值得數據類型,這個特殊的值是null。null值表示空指針對象,故使用typeof操作符檢測null值時會返回"object",實際上,undefined值是派生自null值的,因此ECMA-262規定對他們的相等性測試要返回true
var car = null; alert(typeof car); // "object" alert(null == undefined) //true3. Boolean
Boolean 類型是 ECMAScript 中使用得最多的一種類型,該類型只有兩個字面值:true和false。true 不一定等于 1,而 false 也不一定等于 0
var found = true; var lost = false;
可以對任何數據類型的值調用Boolean()函數,而且總會返回一個Boolean值。至于返回的是true還是false,取決于要轉換值的數據類型及其實際值。下表給出了各種數據類型以及對其對應的轉換規則。
數據類型 | 轉換為true的值 | 轉換為false的值 | |
---|---|---|---|
Boolean | true | false | |
String | 任何非空字符串 | ""(空字符串) | |
Number | 任何非零的數字值(包括無窮大) | 0和NaN | |
Object | 任何對象 | null | |
Undefined | n/a(不適用) | Undefined |
NaN,即非數值(Not a Number)是一個特殊的數值,這個數值用于表示一個本來要返回數值的操作數為未返回數值的情況(這樣就不會拋出錯誤了)。但在 ECMAScript中,任何數值除以 0會返回 NaN。
NaN有兩個不同尋常的特點:
任何涉及 NaN 的操作(例如 NaN/10)都會返回 NaN
NaN 與任何值都不相等,包括 NaN 本身
alert(NaN == NaN); //false2)isNaN()
函數,這個函數接受一個參數,該參數可以是任何類型,而這個函數會幫我們確定這個參數是否"不是數值"。isNaN()在接收到一個值之后,會嘗試將這個值轉換為數值。某些不是數值的值會直接轉換為數值,例如字符串"10"或 Boolean 值。而任何不能被轉換為數值的值都會導致這個函數返回 true。
alert(isNaN(NaN)); //true alert(isNaN(10)); //false(10 是一個數值) alert(isNaN("10")); //false(可以被轉換成數值 10) alert(isNaN("blue")); //true(不能轉換成數值) alert(isNaN(true)); //false(可以被轉換成數值 1)3) 數值轉換:Number()、parseInt()和 parseFloat()
轉型函數 Number()可以用于任何數據類型,而另兩個函數則專門用于把字符串轉換成數值
如果是 Boolean 值true 和 false 將分別被轉換為 1 和 0
如果是數字值只是簡單的傳入和返
如果是 null 值,返回 0
如果是 undefined,返回 NaN
如果是字符串,遵循下列規則:
如果字符串中只包含數字(包括前面帶正號或負號的情況),則將其轉換為十進制數值,即"1"會變成 1,"123"會變成 123,而"011"會變成 11(注意:前導的零被忽略了)
如果字符串中包含有效的浮點格式,如"1.1",則將其轉換為對應的浮點數值(同樣,也會忽略前導零)
如果字符串中包含有效的十六進制格式,例如"0xf",則將其轉換為相同大小的十進制整數值
如果字符串是空的(不包含任何字符),則將其轉換為 0
如果字符串中包含除上述格式之外的字符,則將其轉換為 NaN
如果是對象,則調用對象的 valueOf()方法,然后依照前面的規則轉換返回的值。如果轉換的結果是 NaN,則調用對象的 toString()方法,然后再次依照前面的規則轉換返回的字符串值。
var num1 = Number("Hello world!"); //NaN var num2 = Number(""); //0 var num3 = Number("000011"); //11 var num4 = Number(true); //
string類型用于表示由零或者16位Unicode字符組成的字符序列,即字符串。字符串可以有雙引號(")或者單引號(")表示,不過以雙引號開頭的字符串也必須以雙引號結尾,而以單引號開頭的字符串必須以單引號結尾。
var firstName = "Nicholas"; var lastName = "Zakas"; var firstName = "Nicholas"; // 語法錯誤(左右引號必須匹配)1)字符字面量
string數據類型包含一些特殊的字符字面量,也叫轉義序列,用于表示非打印字符,或者具有其他用途的字符。這些字符字面量如下表所示:
字面量 | 含義 |
---|---|
換行 | |
制表 | |
空格 | |
回車 | |
f | 進紙 |
斜杠 | |
" | 單引號("),在用單引號表示的字符串中使用。例如:"He said, "hey."" |
" | 雙引號("),在用雙引號表示的字符串中使用。例如:"He said, "hey."" |
xnn | 以十六進制代碼nn表示的一個字符(其中n為0~F)。例如,x41表示"A" |
unnnn | 以十六進制代碼nnnn表示的一個Unicode字符(其中n為0~F)。例如,u03a3表示希臘字符Σ |
ECMAScript中的字符串是不可變的,也就是說,字符串一旦創建,他們的值就不能改變。要改變么謳歌變量保存的字符串,首先要銷毀原來的字符串,然后再用另一個包含新值的字符串填充該變量。例如
var lang = "Java"; lang = lang + "Script";3)轉換為字符串
數值、布爾值、對象和字符串值 調用toString()都會返回字符串的一個副本,但 null 和 undefined 值沒有這個方法。
var age = 11; var ageAsString = age.toString(); // 字符串"11" var found = true; var foundAsString = found.toString(); // 字符串"true"
在調用數值的 toString()方法時,可以傳遞一個參數:輸出數值的基數。默認以十進制格式返回數值的字符串表示,通過傳遞基數,toString()可以輸出以二進制、八進制、十六進制,乃至其他任意有效進制格式表示的字符串值。
var num = 10; alert(num.toString()); // "10" alert(num.toString(2)); // "1010" alert(num.toString(8)); // "12" alert(num.toString(10)); // "10" alert(num.toString(16)); // "a"
將任何類型的值轉換為字符串。其轉換規則如下:
如果值有toString()方法,則調用該方法(沒有參數)并返回相應的結果
如果值是null,則返回"null"
如果值是undefined,則返回"undefined"
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"
ECMAScript中的對象其實就是一組數據和功能的集合。對象可以通過執行new操作符后跟要創建的對象類型名稱來創建。而創建Object類型的實例并為其添加屬性和方法,就可以創建自定義對象,如下所示:
var o = new Object();
Object類型所具有的任何屬性和方法也同樣存在于更具體的對象中。Object的每個實例都具有下列屬性和方法。
constructor:保存著用于創建當前對象的函數。對于前面的例子而言,構造函數(constructor)就是Object()。
hasOwnProperty(propertyName): 用于檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,作為參數的屬性名(propertyName)必須以字符串形式指定(例如:o.hasOwnProperty("name"))。
propertyIsEnumerable(propertyName): 用于檢查給定的屬性是否能夠使用 for-in 語句來枚舉。與 hasOwnProperty()方法一樣,作為參數的屬性名必須以字符串形式指定
toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應。
toString():返回對象的字符串表示。
valueOf():返回對象的字符串、數值或布爾值表示。通常與 toString()方法的返回值相同
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103392.html
摘要:二類型轉換隱式類型轉換轉換為字符串類型任意類型轉換為類型任意類型一個加號加任意類型轉換為類型任意類型顯式類型轉換轉換為字符串類型轉換為類型將字符串或布爾值轉換為整數類型。 內容簡介: 一.數據類型簡介 ———— 原始類型 ———— 引用類型 二.數據類型之間的轉換 一、數據類型簡介 數據類型主要分為原始類型(也有稱為基本類型/原始值)和引用類型。 1.原...
摘要:運算符可以用來檢測某個構造函數的屬性是否存在于另外一個要檢測對象的原型鏈上。使用方法可以獲取到變量的準確的數據類型就能解決基本包裝類型的檢測錯誤和的檢測不安全。 本文共 1750 字,讀完只需 7 分鐘 數據類型有哪些? ECMAScript 的數據類型分為簡單數據類型(也被稱為基本數據類型,原始數據類型): Undefined Null String Number Boolean ...
摘要:要確保沒有低估需要存儲的值的范圍,更小是相對與數據類型的最大值范圍來講的。如果無法確定哪個數據類型是最好的,就選擇你認為不會超過范圍的最小類型。整數類型有兩個類型的數字整數和實數。列默認為,這與其他的數據類型不一樣。 簡述 良好的邏輯設計和物理設計是高性能系統的基石,比如反范式設計可以加快某些類型的查詢同時也會影響另外一些類型的查詢效率,所以我們必須重視Mysql對于數據庫的設計(本...
閱讀 3652·2021-09-02 15:11
閱讀 4563·2021-08-16 10:47
閱讀 1559·2019-08-29 18:35
閱讀 3030·2019-08-28 17:54
閱讀 2841·2019-08-26 11:37
閱讀 1496·2019-08-23 16:51
閱讀 1797·2019-08-23 14:36
閱讀 1800·2019-08-23 14:21