ECMAScript的變量是鬆散類型的,所謂鬆散類型就是能夠用來保存任何類型的數據。bash
因爲ECMAScript的變量是鬆散類型,能夠用typeof來檢測給定變量的數據類型。typeof是一個操做符而不是函數。函數
null值表示一個空指針,undefined值是派生自null值的spa
console.log(null == undefined ) \\true
prototype
console.log(null === undefined ) \\false
指針
可用Boolean()
來轉換對應的Boolean值code
在八進制中,若是字面量的數值超出了範圍,那麼前面0會被忽略,後面的數值看成十進制解析。對象
var Num = 019 \\ 19
ip
保存浮點數值須要的內存空間是保存整數值的兩倍內存
Infinity 表示無窮,+Infinity正無窮,-Infinity負無窮字符串
若是某次計算返回了Infinity,那麼該值沒法繼續參與下一次的計算。 用isFinite()
能夠判斷一個數值是否是無窮
0除以0都等於NaN
console.log(0/0) // NaN
console.log(1/0) // Infinity
console.log(-1/0) // -Infinity
複製代碼
NaN == NaN //false
isNaN()
能夠判斷是否‘不是數值’,它會把傳入的參數嘗試轉換成數值,能夠被轉換,返回false,不能被轉換,返回true
console.log(isNaN(NaN)) // true
console.log(isNaN(10)) // false
console.log(isNaN("10")) // false
console.log(isNaN("blue")) // true
console.log(isNaN(true)) // false,能夠被轉換成數值1
複製代碼
轉換規則:
valueOf()
方法,而後按照前面的規則轉換。若是轉換的結果是NaN,則調用的對象的toString()
方法,再按照前面的規則轉換因爲Number()函數在轉換字符串時複雜且不夠合理,所以在處理 整數 的時候更經常使用parseInt()
console.log(parseInt()) // NaN
console.log(parseInt("1234blue")) //1234
console.log(parseInt("0xA")) //10,十六進制
console.log(parseInt("22.5")) //22,小數點不是有效的數字字符
console.log(parseInt("070")) //56,八進制
複製代碼
由於在ECMAScript3 JavaScript 引擎中,「070」被當成八進制字面量,而在ECMAScript5 JavaScript 引擎中,parseInt再也不有解析八進制的能力,「070」被轉換成70。所以,parseInt有第二個參數,使用的基數
console.log(parseInt("AF")) //NaN
console.log(parseInt("AF",16)) //175
console.log(parseInt("070",8)) //56
console.log(parseInt("070")) //70
複製代碼
console.log(parseFloat("1234blue")) //1234
console.log(parseFloat("0xA")) // 0
console.log(parseFloat("22.5")) // 22.5
console.log(parseFloat("22.34.5")) //22.34
console.log(parseFloat("0980.5")) //980.5
console.log(parseFloat("3.125e7")) //31250000
複製代碼
toString()
方法能夠把一個值轉換成一個字符串,null和undefined沒有這個方法,裏面能夠傳遞參數,表示輸出數值的基數(幾進制)
在不知道要轉換的值是否是null和undefined時,能夠用轉型函數String()
,可以將任何類型的值轉換成字符串
Object每一個實例都有下列屬性和方法
function object1() {}
const object3 = new object1();
console.log(object1.prototype.isPrototypeOf(object3));
// expected output: true
複製代碼
var timestamp = (new Date()).valueOf() //返回時間戳