摘要:一門語言可以使用的值的類型,稱為該語言的數據類型。中沒有為字符串定義特殊的數據類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見任務中,布爾操作對于檢驗要求輸入的字符串非常有用。
1、標識符(Names)
標識符由一個字母、下劃線和美元符開頭,其后可以選擇性的加上一個或多個字母、數字或下劃線。標識符不能使用下面這些保留字:
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
在這個列表中大部分保留字尚未在這門語言中使用。這個列表不包括一些本應該被保留而沒有保留的字,諸如undefined、NaN和Infinity。JavaScript不允許使用保留字來命名變量或參數。更糟糕的餓是,JavaScript不遜雨在對象字面量中,或者用點運算符提取對象屬性時,使用保留字作為對象的屬性名。
標識符被用于語句、變量、參數、屬性名、運算符和標記。
2、數值(Numbers)與其他任邊吃語言一樣,JavaScript可以處理諸如數據或文本的值。一門語言可以使用的值的類型,稱為該語言的數據類型。JavaScript支持基本的數值和字符串的數據類型。在JavaScript中,所有數值都是64位雙精度的,取值范圍從-5e-324到1.7976931348623157e308。也就是說,在JavaScript中整數和浮點數之間并沒有什么區別,二者都是數值。下面的例子使用了typeof操作符進行演示:
> typeof 1; "number" > typeof 1.5; "number"
所有JavaScript數值都是按照IEEE-754雙精度二進制數標準進行表示。當執行算術運算時應該注意一些問題。例如,在把兩個數值相加時,在你的腦海中這是一個通用的操作,然而在JavaScript中可能會獲得令人大感意外的結果,下面的代碼演示看著一問題:
> .1 + .2; 0.30000000000000004
JavaScript沒有內置的十進制數據類型,但JavaScript為數值提供了兩個方法:toPrecision和toFixed,這兩個方法可以按照固定位數的小數來格式化數值。下面的代碼演示了著兩個方法的使用:
> var num = 1234.123454321; > num.toFixed(2); "1234.12" > var num2 = 1234.123454321; > num2.toPrecision(8); "1234.1235"
如果使用了一個超出64位范圍的數值,或者獲得一個超出64位范圍的值,JavaScript將返回一個特殊的值:Infinity(無窮大)或者-Infinity(負無窮大)。除數為0將返回Infinity。其他特殊值還包括NaN,他表示一個“非數值”,她是一個容易產生錯誤的值,常常是一些BUG的根源。
當試圖將一個無效字符串對象轉換為一個數值時,結果為NaN值。NaN具有“毒性”,在NaN值與數值之間執行一個操作將返回一個NaN值??梢允褂脙戎玫膇sNaN()函數來檢查一個變量是否是NaN值。
> 10 * 1 + 100 - 1 -NaN; NaN > var x = NaN; > isNaN(x); true
JavaScript支持八進制(基數為8)和十六進制(基數為16)。八進制字面值用一個0(即零)作為前綴,十六進制數值則以一個x作為前綴。
JavaScript內置Math對象用于常見的數學運算。例如,可以使用Math.round()方法獲得兩位數的精度。
> Math.round( (.1+.2)*100)/100; 0.3
充分利用內置對象可以節省時間、提高效率。
3、字符串(Strings)字符串是一個由0個或多個16位的Unicode字符組成的系列,使用單引號或雙引號將字符串括起。這里強調它是Unicode字符,是出于國際化環境中使用JavaScript的重要性。JavaScript中沒有為字符串定義特殊的數據類型。字符串也是(不可變)對象,一旦被創建,就永遠無法改變它。但你可以很容易的通過 + 運算符連接其他字符串來創建一個新字符串。兩個包含著完全相同的字符且字符順序也相同的字符串被認為是相同的字符串。所以:
> "c" + "a" + "t" === "cat"; true
字符串是對象,因此字符串具有一些相應的屬性和方法。字符串有一個length屬性。例如,"JavaScript".length是10;再比如下面的代碼:
> "test String".indexOf("s"); 2 > "test String".charAt(5); "S"
我們也可以擴展內置的String對象以滿足開發人員的需要。
4、布爾(Boolean)Boolean類型表示true值和false值。在適當的上下文中,比如在一個if語句中,任何條件判斷的值都將被轉換為Boolean值以判斷“真”或“假”。在判斷條件中,空字符串、NaN值、null、undefined、數值0和關鍵字false都將被計算為false,其它的任何值都將被解析為true。
if("") { console.log("something happens"); } else { console.log("nothing happens"); } //輸出:nothing happens
JavaScript支持的布爾操作包括:邏輯與(&&)、邏輯或(||)和邏輯非(!)。在很多常見任務中,布爾操作對于檢驗要求輸入的字符串非常有用。
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值表示一個非數值的值,但你如果輸入下面的代碼,結果將會很奇怪:
> typeof NaN; "number"
這是typeof操作符奇怪的行為之一。
5、類型比較JavaScript具有等于(==)操作符和等同(===)操作符。==操作符是危險的,因為它在執行比較之前,強制執行類型轉換。例如:
> 1 == "1"; true
顯然,這不是我們想要的比較結果。如果左操作數和右操作數真正完全相同,===操作符才會返回true。
> 1 === "1"; false
對應的還有!=和!==操作符,請總是使用===和!==操作符。
6、日期(Data)JavaScript內置了Date對象,可以使用new操作符和Date()構造函數來創建Date對象,Date對象用于表示日期和時間。不帶任何參數創建一個新的Date對象,獲得的是一個表示當前日期和時間的Date對象。
> var thisMoment = new Date(); > console.log(thisMoment); Date {Sun Aug 30 2015 10:47:14 GMT+0800} > thisMoment.getFullYear(); 2015
雖然Date是一個方便的對象,了解該對象當然還是有用的。強烈建議使用開源的Date.js庫來執行日期/時間的計算,可以從https://github.com/datejs/Datejs找到該js庫,datajs官方網站現在已經無法打開,返回503狀態。
7、其他類型聲明一個變量時未對其賦值,或者訪問了一個不存在的對象屬性,結果都會產生一個稱為undefined的類型。null時JavaScript的一個內置對象,它表示沒有值。在執行比較操作時,undefined和null二者都被裝換成false值,但是最好避免使用undefined。在很多JavaScript解析器中,undefined是可以重新賦值的,因而可能會產生存在弊病的代碼:
undefined = true; if(undefined){ console.log("騙你!"); } //輸出:騙你!
下面列出了JavaScript支持的各種數據類型。正則表達式,或稱為RegEx不在這里介紹。
Number
String
Boolean
Object
Function
Array
Date
RegEx
Null
Undefined
在使用try/catch語句時,某些附加的內置error類型是非常有用的。通常在throw語句中創建error對象。
try{ throw new Error("非常糟糕的事情發生了!"); }catch(e){ console.log(e.name + ":" + e.message); } //輸出:Error:非常糟糕的事情發生了!
下面的列表列出了各種不同的error類型
Error
EvalError
RangError
ReferenceError
SyntaxError
TypeError
URIError
對于我來說,最常見的莫過于SyntaxError這個經典的語法錯誤,太熟悉了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79033.html
摘要:一門語言可以使用的值的類型,稱為該語言的數據類型。中沒有為字符串定義特殊的數據類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見任務中,布爾操作對于檢驗要求輸入的字符串非常有用。 1、標識符(Names) 標識符由一個字母、下劃線和美元符開頭,其后可以選擇性的加上一個或多個字母、數字或下劃線。標識符不能使用下面這些保留字: abstract boolean...
摘要:本篇文章將回顧學習種基本類型和及數據類型之間的轉化。如果不能,再調用對象的方法,再測試返回值是否可以被轉化為數值。首先可以用于任何數據類型,另外兩個則是專門用于把字符串轉換成數值。 概述 ECMAScript中有5中基本數據類型:Undefined,Null,Boolean,Number,String,還有一種復雜數據類型對象(Object),Object本質上是由一組無序的名值對組成...
摘要:棧區由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。屬性返回對創建此對象的構造函數的引用。所有的和都是宿主對象參考高級程序設計堆和棧的概念和區別全面解析中的數據類型與類型轉換 數據類型 數據類型劃分 javascript中定義了6中基本數據類型(原始值類型),和一種復雜數據類型(引用類型),所謂復雜類型,其本質是由無序的名值對(key:val...
摘要:中有兩中數值類型基本數值類型和對象類型引用數據類型基本數據類型新增對象類型可變與不可變基本上數據類型是不可變的,我們不能給他添加屬性,即使添加了屬性也是無效的?;旧蠑祿愋捅容^很簡單,常規思維可以理解基本數據類型對比,沒毛病,很好理解。 JavaScript中有兩中數值類型:基本數值類型和對象類型(引用數據類型) 基本數據類型: Boolean undefined Null ...
摘要:每個類有三部分構成第一部分是構造函數內,供實例對象化復制用。第二部分是構造函數外,直接通過點語法添加,供類使用,實例化對象訪問不到。組合繼承還有一個要注意的地方在代碼處,將子類原型的屬性指向子類的構造函數。 前言 前一陣面試,過程中發現問到一些很基礎的問題時候,自己并不能很流暢的回答出來。或者遇到一些基礎知識的應用,由于對這些點理解的不是很深入,拿著筆居然什么都寫不出來,于是有了回顧一...
閱讀 2398·2021-11-23 09:51
閱讀 1209·2021-11-22 13:54
閱讀 3421·2021-09-24 10:31
閱讀 1066·2021-08-16 10:46
閱讀 3619·2019-08-30 15:54
閱讀 700·2019-08-30 15:54
閱讀 2886·2019-08-29 17:17
閱讀 3154·2019-08-29 15:08