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