摘要:一門語(yǔ)言可以使用的值的類型,稱為該語(yǔ)言的數(shù)據(jù)類型。中沒(méi)有為字符串定義特殊的數(shù)據(jù)類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見(jiàn)任務(wù)中,布爾操作對(duì)于檢驗(yàn)要求輸入的字符串非常有用。
1、標(biāo)識(shí)符(Names)
標(biāo)識(shí)符由一個(gè)字母、下劃線和美元符開(kāi)頭,其后可以選擇性的加上一個(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)該被保留而沒(méi)有保留的字,諸如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。也就是說(shuō),在JavaScript中整數(shù)和浮點(diǎn)數(shù)之間并沒(méi)有什么區(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)該注意一些問(wèn)題。例如,在把兩個(gè)數(shù)值相加時(shí),在你的腦海中這是一個(gè)通用的操作,然而在JavaScript中可能會(huì)獲得令人大感意外的結(jié)果,下面的代碼演示看著一問(wèn)題:
> .1 + .2; 0.30000000000000004
JavaScript沒(méi)有內(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ì)象用于常見(jiàn)的數(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中沒(méi)有為字符串定義特殊的數(shù)據(jù)類型。字符串也是(不可變)對(duì)象,一旦被創(chuàng)建,就永遠(yuǎn)無(wú)法改變它。但你可以很容易的通過(guò) + 運(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ì)象以滿足開(kāi)發(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支持的布爾操作包括:邏輯與(&&)、邏輯或(||)和邏輯非(!)。在很多常見(jiàn)任務(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)烈建議使用開(kāi)源的Date.js庫(kù)來(lái)執(zhí)行日期/時(shí)間的計(jì)算,可以從https://github.com/datejs/Datejs找到該js庫(kù),datajs官方網(wǎng)站現(xiàn)在已經(jīng)無(wú)法打開(kāi),返回503狀態(tài)。
7、其他類型聲明一個(gè)變量時(shí)未對(duì)其賦值,或者訪問(wèn)了一個(gè)不存在的對(duì)象屬性,結(jié)果都會(huì)產(chǎn)生一個(gè)稱為undefined的類型。null時(shí)JavaScript的一個(gè)內(nèi)置對(duì)象,它表示沒(méi)有值。在執(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)說(shuō),最常見(jiàn)的莫過(guò)于SyntaxError這個(gè)經(jīng)典的語(yǔ)法錯(cuò)誤,太熟悉了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86288.html
摘要:一門語(yǔ)言可以使用的值的類型,稱為該語(yǔ)言的數(shù)據(jù)類型。中沒(méi)有為字符串定義特殊的數(shù)據(jù)類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見(jiàn)任務(wù)中,布爾操作對(duì)于檢驗(yàn)要求輸入的字符串非常有用。 1、標(biāo)識(shí)符(Names) 標(biāo)識(shí)符由一個(gè)字母、下劃線和美元符開(kāi)頭,其后可以選擇性的加上一個(gè)或多個(gè)字母、數(shù)字或下劃線。標(biāo)識(shí)符不能使用下面這些保留字: abstract boolean...
摘要:本篇文章將回顧學(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ì)組成...
摘要:棧區(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...
摘要:中有兩中數(shù)值類型基本數(shù)值類型和對(duì)象類型引用數(shù)據(jù)類型基本數(shù)據(jù)類型新增對(duì)象類型可變與不可變基本上數(shù)據(jù)類型是不可變的,我們不能給他添加屬性,即使添加了屬性也是無(wú)效的。基本上數(shù)據(jù)類型比較很簡(jiǎn)單,常規(guī)思維可以理解基本數(shù)據(jù)類型對(duì)比,沒(méi)毛病,很好理解。 JavaScript中有兩中數(shù)值類型:基本數(shù)值類型和對(duì)象類型(引用數(shù)據(jù)類型) 基本數(shù)據(jù)類型: Boolean undefined Null ...
摘要:每個(gè)類有三部分構(gòu)成第一部分是構(gòu)造函數(shù)內(nèi),供實(shí)例對(duì)象化復(fù)制用。第二部分是構(gòu)造函數(shù)外,直接通過(guò)點(diǎn)語(yǔ)法添加,供類使用,實(shí)例化對(duì)象訪問(wèn)不到。組合繼承還有一個(gè)要注意的地方在代碼處,將子類原型的屬性指向子類的構(gòu)造函數(shù)。 前言 前一陣面試,過(guò)程中發(fā)現(xiàn)問(wèn)到一些很基礎(chǔ)的問(wèn)題時(shí)候,自己并不能很流暢的回答出來(lái)。或者遇到一些基礎(chǔ)知識(shí)的應(yīng)用,由于對(duì)這些點(diǎn)理解的不是很深入,拿著筆居然什么都寫不出來(lái),于是有了回顧一...
閱讀 2922·2021-11-23 09:51
閱讀 3160·2021-11-12 10:36
閱讀 3203·2021-09-27 13:37
閱讀 3156·2021-08-17 10:15
閱讀 2586·2019-08-30 15:55
閱讀 2748·2019-08-30 13:07
閱讀 790·2019-08-29 16:32
閱讀 2642·2019-08-26 12:00