JavaScript 基本數據類型

JavaScript 中的基本數據類型

靜態類型語言與動態類型語言

在編程語言中有這兩種狀況之分,具體的含義爲:javascript

動態類型語言是一類在運行時能夠改變其結構的語言:例如新的函數、對象、甚至代碼能夠被引進,已有的函數能夠被刪除或是其餘結構上的變化。 --維基百科java

而靜態類型語言則與之相反,典型的動態類型語言有JavaScriptPHPPythonRuby 等。編程

基本數據類型

JavaScript中共有 5 種簡單數據類型(暫不考慮 Symbol): UndefinedBooleanNullNumberString,還有一種複雜的數據類型--Object。咱們先分別看一下各自的特色。瀏覽器

Undefined

Undefined 類型只有一個值,即特殊的 Undefined。當咱們使用let聲明瞭一個變量可是並未初始化賦值,它的值就是Undefined編程語言

let javascript; //等價於 let javascript = undefined; 但不必這樣
javascript === undefined; //true
複製代碼

注意請與未定義分開函數

let javascript;
console.log(javascript); //"undefined"
console.log(java); //java is not define;
複製代碼
Null

一樣的,Null也是隻有一個值的數據類型:null。它表示一個空的對象指針,若是咱們定義了一個變量準備未來存放對象,咱們就能夠將它初始化爲nullui

Boolean

這種類型在大多數編程語言中都很常見,該類型有兩個值:truefalse。請注意不要把它與數字01產生聯繫。還要注意的是他是區分大小寫的,True並非布爾值,只是標識符。雖然字面值只有兩個,但ECMAScript中全部類型中都有與之相對應的值,若是要將一個其餘值轉換爲布爾值,可使用Boolean函數來轉型。spa

let item = "javascript";
let booleanitem = Boolean(item); //true
複製代碼
Number

JavaScript中使用 IEEE754格式來表示整數和浮點數值。基本數字字面量有十進制整數八進制整數十六進制整數。在算數運算時全部八進制和十六進制都將轉換爲十進制數值。指針

  • 浮點數值

數值中必須包含一個小數點,而且小數點後必須有一個數字。code

浮點數值的最高精度是17位小數,可是在算數運算中精度遠遠不如整數:

0.1 + 0.2 === 0.3; //false,舍入偏差;
console.log(0.1 + 0.2); //0.30000000000000004
複製代碼
  • 數值範圍

ECMAScript 能保存的最小數值保存在Number.MIN_VALUE中,在大多數瀏覽器中爲5e-324;能保存的最大值保存在Number.MAX_VALUE中,在大多數瀏覽器中爲1.7976931348623157e+308

若是在某次計算中超出了這一值,那麼會被轉化成Infinity(正無窮)或者-Infinity(負無窮),而且沒法參與下一次的計算。

  • NaN

NaN 即 Not a Number。這個數值用來表示一個原本要返回數值的操做數未返回數值的狀況。

它有兩個顯著的特色。 任何涉及 NaN 的操做都會返回 NaN。

console.log(NaN/100); //NaN
複製代碼

NaN 與任何值都不相等,包括它自己。

console.log(NaN === NaN); //false
複製代碼

針對這兩個特色,在ECMAScript 中定義了isNaN()用來判斷是否爲NaN類型。

String

用於表示由 0 或多個 16 位 Unicode 字符組成的字符序列,也就是字符串。 其中有一些特殊的字符字面量,也叫轉義序列,用於表示非打印字符,表示換行(\n)、製表(\t)、 空格(\b)、回車(\r)等用途。 任何字符串的長度均可以經過訪問其length屬性得到:

let str = 'javascript';
console.log(str.lenth); //10
複製代碼

不過須要注意的是若是字符串中包含雙字節字符,返回的長度可能就不精確了:

let str = '\uD83D\uDCA9';
console.log(str.length); //2
複製代碼

字符串一旦被建立則值不可變,除非銷燬原來的字符串再用新的值填充該變量。

Object

對象是一組數據和功能的集合。在ECMAScriptObject類型是全部它的實例的基礎。該類型所具備的任何屬性和方法存在於更具體的對象中。

類型檢測

因爲ECMAScript鬆散的數據類型,咱們須要一種手段來隨時檢查某個變量的數據類型。typeof操做符主要就負責這個功能:

let data1;
console.log(typeof(data1)); //'undefined'
let data2 = 'hello';
console.log(typeof(data2)); //'string'
let data3 = true;
console.log(typeof(data3)); //'boolean'
let data4 = 12;
console.log(typeof(data4)); //'number'
let data5 = function hello () {return 'world'};
console.log(data5); //'function'
let data6 = {name: 'Baoyuan'};
console.log(typeof(data6)); //'object'
let data7 = null;
console.log(typeof(data7)); //'object' 
複製代碼

須要注意的是在Objectnull類型上使用的話都返回了'object',這是由於特殊值null被認爲是空的對象引用。typeof是一個操做符而不是函數,因此括號並非必須的。它的操做數能夠是變量也能夠是數值字面量。

引用類型

除了基本數據類型外在ECMAScript中存在引用類型,包括ObjectArrayDateFunction等,下一篇詳細說明。 若有錯誤歡迎聯繫我批評指正。

相關文章
相關標籤/搜索