成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript中的數(shù)據(jù)類型回顧

ideaa / 2639人閱讀

摘要:一門語(yǔ)言可以使用的值的類型,稱為該語(yǔ)言的數(shù)據(jù)類型。中沒有為字符串定義特殊的數(shù)據(jù)類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見任務(wù)中,布爾操作對(duì)于檢驗(yàn)要求輸入的字符串非常有用。

1、標(biāo)識(shí)符(Names)

標(biāo)識(shí)符由一個(gè)字母、下劃線和美元符開頭,其后可以選擇性的加上一個(gè)或多個(gè)字母、數(shù)字或下劃線。標(biāo)識(shí)符不能使用下面這些保留字:

abstract
boolean、break、byte
case、catch、char、class、const、continue
debugger、default、delete、do、double
else、enume、export、extends
false、final、finally、float、for、function
goto
if、implement、import、in、instanceof、int、interface
long
native、new、null
package、private、protected、public
return
short、static、supper、switch、synchronized
this、throw、throws、transient、true、try、typeof
var、volatile、void
while、with

在這個(gè)列表中大部分保留字尚未在這門語(yǔ)言中使用。這個(gè)列表不包括一些本應(yīng)該被保留而沒有保留的字,諸如undefined、NaN和Infinity。JavaScript不允許使用保留字來(lái)命名變量或參數(shù)。更糟糕的餓是,JavaScript不遜雨在對(duì)象字面量中,或者用點(diǎn)運(yùn)算符提取對(duì)象屬性時(shí),使用保留字作為對(duì)象的屬性名。

標(biāo)識(shí)符被用于語(yǔ)句、變量、參數(shù)、屬性名、運(yùn)算符和標(biāo)記。

2、數(shù)值(Numbers)

與其他任邊吃語(yǔ)言一樣,JavaScript可以處理諸如數(shù)據(jù)或文本的值。一門語(yǔ)言可以使用的值的類型,稱為該語(yǔ)言的數(shù)據(jù)類型。JavaScript支持基本的數(shù)值和字符串的數(shù)據(jù)類型。在JavaScript中,所有數(shù)值都是64位雙精度的,取值范圍從-5e-324到1.7976931348623157e308。也就是說,在JavaScript中整數(shù)和浮點(diǎn)數(shù)之間并沒有什么區(qū)別,二者都是數(shù)值。下面的例子使用了typeof操作符進(jìn)行演示:

> typeof 1;
"number"
> typeof 1.5;
"number"

所有JavaScript數(shù)值都是按照IEEE-754雙精度二進(jìn)制數(shù)標(biāo)準(zhǔn)進(jìn)行表示。當(dāng)執(zhí)行算術(shù)運(yùn)算時(shí)應(yīng)該注意一些問題。例如,在把兩個(gè)數(shù)值相加時(shí),在你的腦海中這是一個(gè)通用的操作,然而在JavaScript中可能會(huì)獲得令人大感意外的結(jié)果,下面的代碼演示看著一問題:

> .1 + .2;
0.30000000000000004

JavaScript沒有內(nèi)置的十進(jìn)制數(shù)據(jù)類型,但JavaScript為數(shù)值提供了兩個(gè)方法:toPrecision和toFixed,這兩個(gè)方法可以按照固定位數(shù)的小數(shù)來(lái)格式化數(shù)值。下面的代碼演示了著兩個(gè)方法的使用:

> var num = 1234.123454321;
> num.toFixed(2);
"1234.12"
> var num2 = 1234.123454321;
> num2.toPrecision(8);
"1234.1235"

如果使用了一個(gè)超出64位范圍的數(shù)值,或者獲得一個(gè)超出64位范圍的值,JavaScript將返回一個(gè)特殊的值:Infinity(無(wú)窮大)或者-Infinity(負(fù)無(wú)窮大)。除數(shù)為0將返回Infinity。其他特殊值還包括NaN,他表示一個(gè)“非數(shù)值”,她是一個(gè)容易產(chǎn)生錯(cuò)誤的值,常常是一些BUG的根源。

當(dāng)試圖將一個(gè)無(wú)效字符串對(duì)象轉(zhuǎn)換為一個(gè)數(shù)值時(shí),結(jié)果為NaN值。NaN具有“毒性”,在NaN值與數(shù)值之間執(zhí)行一個(gè)操作將返回一個(gè)NaN值??梢允褂脙?nèi)置的isNaN()函數(shù)來(lái)檢查一個(gè)變量是否是NaN值。

> 10 * 1 + 100 - 1 -NaN;
NaN
> var x = NaN;
> isNaN(x);
true

JavaScript支持八進(jìn)制(基數(shù)為8)和十六進(jìn)制(基數(shù)為16)。八進(jìn)制字面值用一個(gè)0(即零)作為前綴,十六進(jìn)制數(shù)值則以一個(gè)x作為前綴。

JavaScript內(nèi)置Math對(duì)象用于常見的數(shù)學(xué)運(yùn)算。例如,可以使用Math.round()方法獲得兩位數(shù)的精度。

> Math.round( (.1+.2)*100)/100;
0.3

充分利用內(nèi)置對(duì)象可以節(jié)省時(shí)間、提高效率。

3、字符串(Strings)

字符串是一個(gè)由0個(gè)或多個(gè)16位的Unicode字符組成的系列,使用單引號(hào)或雙引號(hào)將字符串括起。這里強(qiáng)調(diào)它是Unicode字符,是出于國(guó)際化環(huán)境中使用JavaScript的重要性。JavaScript中沒有為字符串定義特殊的數(shù)據(jù)類型。字符串也是(不可變)對(duì)象,一旦被創(chuàng)建,就永遠(yuǎn)無(wú)法改變它。但你可以很容易的通過 + 運(yùn)算符連接其他字符串來(lái)創(chuàng)建一個(gè)新字符串。兩個(gè)包含著完全相同的字符且字符順序也相同的字符串被認(rèn)為是相同的字符串。所以:

> "c" + "a" + "t" === "cat";
true

字符串是對(duì)象,因此字符串具有一些相應(yīng)的屬性和方法。字符串有一個(gè)length屬性。例如,"JavaScript".length是10;再比如下面的代碼:

> "test String".indexOf("s");
2
> "test String".charAt(5);
"S"

我們也可以擴(kuò)展內(nèi)置的String對(duì)象以滿足開發(fā)人員的需要。

4、布爾(Boolean)

Boolean類型表示true值和false值。在適當(dāng)?shù)纳舷挛闹校热缭谝粋€(gè)if語(yǔ)句中,任何條件判斷的值都將被轉(zhuǎn)換為Boolean值以判斷“真”或“假”。在判斷條件中,空字符串、NaN值、null、undefined、數(shù)值0和關(guān)鍵字false都將被計(jì)算為false,其它的任何值都將被解析為true。

if("") {
  console.log("something happens");
} else {
  console.log("nothing happens");
}
//輸出:nothing happens

JavaScript支持的布爾操作包括:邏輯與(&&)、邏輯或(||)和邏輯非(!)。在很多常見任務(wù)中,布爾操作對(duì)于檢驗(yàn)要求輸入的字符串非常有用。

function validate(){
    var name_input = "java";
    var age_input;
    return name_input && age_input;
}
if(validate()){
    console.log("pass");
} else {
    console.log("fail");
}
//輸出 fail

NaN值表示一個(gè)非數(shù)值的值,但你如果輸入下面的代碼,結(jié)果將會(huì)很奇怪:

> typeof NaN;
"number"

這是typeof操作符奇怪的行為之一。

5、類型比較

JavaScript具有等于(==)操作符和等同(===)操作符。==操作符是危險(xiǎn)的,因?yàn)樗趫?zhí)行比較之前,強(qiáng)制執(zhí)行類型轉(zhuǎn)換。例如:

> 1 == "1";
true

顯然,這不是我們想要的比較結(jié)果。如果左操作數(shù)和右操作數(shù)真正完全相同,===操作符才會(huì)返回true。

> 1 === "1";
false

對(duì)應(yīng)的還有!=和!==操作符,請(qǐng)總是使用===和!==操作符。

6、日期(Data)

JavaScript內(nèi)置了Date對(duì)象,可以使用new操作符和Date()構(gòu)造函數(shù)來(lái)創(chuàng)建Date對(duì)象,Date對(duì)象用于表示日期和時(shí)間。不帶任何參數(shù)創(chuàng)建一個(gè)新的Date對(duì)象,獲得的是一個(gè)表示當(dāng)前日期和時(shí)間的Date對(duì)象。

> var thisMoment = new Date();
> console.log(thisMoment);
Date {Sun Aug 30 2015 10:47:14 GMT+0800}
> thisMoment.getFullYear();
2015

雖然Date是一個(gè)方便的對(duì)象,了解該對(duì)象當(dāng)然還是有用的。強(qiáng)烈建議使用開源的Date.js庫(kù)來(lái)執(zhí)行日期/時(shí)間的計(jì)算,可以從https://github.com/datejs/Datejs找到該js庫(kù),datajs官方網(wǎng)站現(xiàn)在已經(jīng)無(wú)法打開,返回503狀態(tài)。

7、其他類型

聲明一個(gè)變量時(shí)未對(duì)其賦值,或者訪問了一個(gè)不存在的對(duì)象屬性,結(jié)果都會(huì)產(chǎn)生一個(gè)稱為undefined的類型。null時(shí)JavaScript的一個(gè)內(nèi)置對(duì)象,它表示沒有值。在執(zhí)行比較操作時(shí),undefined和null二者都被裝換成false值,但是最好避免使用undefined。在很多JavaScript解析器中,undefined是可以重新賦值的,因而可能會(huì)產(chǎn)生存在弊病的代碼:

undefined = true;
if(undefined){
    console.log("騙你!");
}
//輸出:騙你!

下面列出了JavaScript支持的各種數(shù)據(jù)類型。正則表達(dá)式,或稱為RegEx不在這里介紹。

Number

String

Boolean

Object

Function

Array

Date

RegEx

Null

Undefined

在使用try/catch語(yǔ)句時(shí),某些附加的內(nèi)置error類型是非常有用的。通常在throw語(yǔ)句中創(chuàng)建error對(duì)象。

try{
    throw new Error("非常糟糕的事情發(fā)生了!");
}catch(e){
    console.log(e.name + ":" + e.message);
}
//輸出:Error:非常糟糕的事情發(fā)生了!

下面的列表列出了各種不同的error類型

Error

EvalError

RangError

ReferenceError

SyntaxError

TypeError

URIError

對(duì)于我來(lái)說,最常見的莫過于SyntaxError這個(gè)經(jīng)典的語(yǔ)法錯(cuò)誤,太熟悉了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79033.html

相關(guān)文章

  • JavaScript中的數(shù)據(jù)類型回顧

    摘要:一門語(yǔ)言可以使用的值的類型,稱為該語(yǔ)言的數(shù)據(jù)類型。中沒有為字符串定義特殊的數(shù)據(jù)類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見任務(wù)中,布爾操作對(duì)于檢驗(yàn)要求輸入的字符串非常有用。 1、標(biāo)識(shí)符(Names) 標(biāo)識(shí)符由一個(gè)字母、下劃線和美元符開頭,其后可以選擇性的加上一個(gè)或多個(gè)字母、數(shù)字或下劃線。標(biāo)識(shí)符不能使用下面這些保留字: abstract boolean...

    ralap 評(píng)論0 收藏0
  • JavaScript回顧學(xué)習(xí):數(shù)據(jù)類型

    摘要:本篇文章將回顧學(xué)習(xí)種基本類型和及數(shù)據(jù)類型之間的轉(zhuǎn)化。如果不能,再調(diào)用對(duì)象的方法,再測(cè)試返回值是否可以被轉(zhuǎn)化為數(shù)值。首先可以用于任何數(shù)據(jù)類型,另外兩個(gè)則是專門用于把字符串轉(zhuǎn)換成數(shù)值。 概述 ECMAScript中有5中基本數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String,還有一種復(fù)雜數(shù)據(jù)類型對(duì)象(Object),Object本質(zhì)上是由一組無(wú)序的名值對(duì)組成...

    youkede 評(píng)論0 收藏0
  • 基礎(chǔ)回顧javascript數(shù)據(jù)類型

    摘要:棧區(qū)由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。屬性返回對(duì)創(chuàng)建此對(duì)象的構(gòu)造函數(shù)的引用。所有的和都是宿主對(duì)象參考高級(jí)程序設(shè)計(jì)堆和棧的概念和區(qū)別全面解析中的數(shù)據(jù)類型與類型轉(zhuǎn)換 數(shù)據(jù)類型 數(shù)據(jù)類型劃分 javascript中定義了6中基本數(shù)據(jù)類型(原始值類型),和一種復(fù)雜數(shù)據(jù)類型(引用類型),所謂復(fù)雜類型,其本質(zhì)是由無(wú)序的名值對(duì)(key:val...

    codergarden 評(píng)論0 收藏0
  • 重新回顧JavaScript的數(shù)值類型

    摘要:中有兩中數(shù)值類型基本數(shù)值類型和對(duì)象類型引用數(shù)據(jù)類型基本數(shù)據(jù)類型新增對(duì)象類型可變與不可變基本上數(shù)據(jù)類型是不可變的,我們不能給他添加屬性,即使添加了屬性也是無(wú)效的?;旧蠑?shù)據(jù)類型比較很簡(jiǎn)單,常規(guī)思維可以理解基本數(shù)據(jù)類型對(duì)比,沒毛病,很好理解。 JavaScript中有兩中數(shù)值類型:基本數(shù)值類型和對(duì)象類型(引用數(shù)據(jù)類型) 基本數(shù)據(jù)類型: Boolean undefined Null ...

    cncoder 評(píng)論0 收藏0
  • 前端面試回顧(1)---javascript的面向?qū)ο?/b>

    摘要:每個(gè)類有三部分構(gòu)成第一部分是構(gòu)造函數(shù)內(nèi),供實(shí)例對(duì)象化復(fù)制用。第二部分是構(gòu)造函數(shù)外,直接通過點(diǎn)語(yǔ)法添加,供類使用,實(shí)例化對(duì)象訪問不到。組合繼承還有一個(gè)要注意的地方在代碼處,將子類原型的屬性指向子類的構(gòu)造函數(shù)。 前言 前一陣面試,過程中發(fā)現(xiàn)問到一些很基礎(chǔ)的問題時(shí)候,自己并不能很流暢的回答出來(lái)?;蛘哂龅揭恍┗A(chǔ)知識(shí)的應(yīng)用,由于對(duì)這些點(diǎn)理解的不是很深入,拿著筆居然什么都寫不出來(lái),于是有了回顧一...

    animabear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<