Javascript基本概念(二)
JS高程的第三章第二節,對資料型別進行一下學習
JS有五種基本資料型別:Number,String,Boolean,Undefined,Null和一種複雜型別:Object,Object本質上是由一組無序的名值對組成的(說好的萬物皆物件來著)。JS不支援任何建立自定義型別的機制。
typeof 操作符
ECMAScript是鬆散型別的,typeof就是負責來檢測給定變數的資料型別的操作符。
typeof是判斷引數是什麼型別的例項,就一個引數
typeof一般只能返回如下幾個結果:”number”、”string”、”boolean”、”object”、”function” 和 “undefined”。
Undefined型別
Undefined型別只有一個值,即特殊的undefined。只有在變數宣告且未初始化的時候,變數的值為undefined。
建議顯式的初始化undefined,這樣發現值為undefined的時候,就會知道該變數未宣告而不是未初始化。
let message = 'undefined';
Null型別
Null型別只有一個值的資料型別,即特殊的null。從邏輯角度來看,null值表示一個空物件指標,使用typeof操作符檢測null值時會返回’object’。
如果定義的變數準備在將來用於儲存物件,那麼最好將該變數初始化為null而不是其他值。只要直接檢查null值就可以知道相應的變數是否已經儲存了一個物件的引用
if (obj != null){
// 對 car 物件執行某些操作
}
另外:undefined值是派生自null值的,在驗證相等時,它們的相等性測試要返回true。但是在全等性測試時返回false。
Boolean型別
Boolean型別是JS中使用得最多的一種型別,該型別只有兩個字面值:true和false。Boolean型別的字面值true和false是區分大小寫的。
Boolean型別的字面值只有兩個,但JS中所有型別的值都有與這兩個Boolean值等價的值。要將一個值轉換為其對應的 Boolean值,可以呼叫轉型函式Boolean(),可以對任何資料型別的值呼叫Boolean()函式,而且總會返回一個Boolean值
const message = 'hello world';
const bool = Boolean(message);
資料型別 | true | false |
---|---|---|
String | 任何非空字串 | ”(空字串) |
Boolean | true | false |
Number | 任何非0值 | 0和NaN |
Object | 任何物件 | null |
undefined | undefined |
Number型別
Number型別使用IEEE754格式來表示整數和浮點數值(浮點數值在某些語言中也被稱為雙精度數值)。
最基本的數值字面量格式是十進位制整數:const num = 254;
八進位制字面值的第一位必須是零(0),然後是八進位制數字序列(0~7)const num2 = 03
;八進位制字面量在嚴格模式下是無效的
十六進位制字面值的前兩位必須是 0x,const num2 = 0xff
算術計算時,所有以八進位制和十六進位制表示的數值都會被轉換成十進位制數值
在JavaScript中儲存數值的方式,可以儲存正零(+0)和負零(0)。正零和負零被認為相等
1、浮點數值
數值中必須包含一個小數點,並且小數點後面必須至少有一位數字.浮點數儲存空間是整數的兩倍,如果小數點後的值為0或者沒有任何數值,那麼該數值就會儲存成整數
用e或E表示10的冪。2e5
,浮點數的最高精度為17位。算術運算的時候,精度比整數差的多。不要測試浮點數相等。
2、最值:Number.MIN_VALUE, Number.MAX_VALUE
3、NaN:
該值表示一個本來要返回Number型別的運算元未返回數值的情況。
設計NaN的所有操作都等於NaN,且NaN與任何值都不想等,包括NaN
isNaN()函式,用來判斷一個值是否為數值(number)
isNaN也適用於物件,在判斷物件的時候,會先呼叫物件的valueOf()方法,確定該返回值是否是數值,如果不行,會呼叫toString()方法,再判斷是否是數值。
isNaN()
4、數值轉換
有3個方法可以將非數值型別的值轉換成數值型別:Number() parseInt() parseFloat()。
Number()方法可以將任何數值型別轉化成數值型別,其他兩個需要字串型別
Number()轉換規則:
- Boolean的值,true轉換成1, false轉化成0
- null 轉化成0
- undefined 轉化成NaN
String變數
- 是整數的轉換成十進位制整數,前導0將被去掉
- 浮點數將被轉化成浮點數,前導0將被去掉
- 十六進位制的數值將被轉換成十進位制相同大小的值
- 空字串將被轉換成0
- 其他的將被轉換成NaN
- Object物件 會先呼叫物件的valueOf()方法,確定該返回值是否是數值,如果NaN,會呼叫toString()方法,再按照string方法判斷。
parseInt()轉換規則
轉換字串,從第一個非空格字元開始,是數字或者進位制符號就繼續下一個字元。否則就NaN
浮點數轉化成整數,空字串轉化成NaN
parseInt('') = NaN
parseFloat()轉化規則
從第一個字元開始判斷,知道遇到非浮點數字符。
第一個小數點有效,其他的則無效。
16進位制會被轉化成0
忽略前導0
String型別
用於表示有0到多個16位Unicode字元組成的字元序列,即字串。用”或者”“表示
1、字元字面量 即轉義字元
2、字串特點
ES中,字串一旦建立就不能改變,要改變就會銷燬之前變數,然後生產新的變數。
3、轉換成字串
toString()方法
Number,Boolean,Object,String都有這個方法,轉換成相應的字串。Null和Undefined沒有這個方法。
如果有toString()方法,那就呼叫該方法
如果沒有,null 轉換成’null’,undefined 轉換成’undefined’
Object
ES中的物件就是一組資料和功能的集合。物件可以通過new操作符後加名字的來建立
var o = new Object()
Object型別是所有它的例項的基礎,其具有的屬性,在其他所有的例項中都會有。
Object有的屬性和方法
- constructor:儲存用於建立當前物件的函式
- hasOwnProperty(propertyName): 用於判斷是否有屬於自己的屬性,而不是在原型中的屬性
- isPrototypeOf(object): 用於檢查傳入的物件是否是傳入物件的原型
- propertyIsEnumerable(propertyName):用於檢查屬效能否用for-in來遍歷
- toLocaleString():返回物件的字串表示
- toString(): 返回物件的字串表示
- valueOf():返回物件的字串,數值,布林表示,通常和toString()結果一樣。