JS數據類型與類型轉換

1. 數據類型

(5個基本數據類型)number  string Boolean undefined null  和一個引用類型 objectjavascript

  • 對象就是由一些彼此相關的屬性和方法集合在一塊兒而構成的一個數據實體。常見的對象有array,window,document等。

2. 判斷類型(typeof)html

7種:number string Boolean undefined object function symbol   https://www.cnblogs.com/sker/p/5474591.htmljava

  • 值類型 number string Boolean undefined 一個值佔一個空間
  • 引用類型 object function  不少值佔一個空間
  • [] {} null 是object類型

3. 類型轉換函數

(1)強制轉換測試

  • 將變量轉換成字符串:toString()或者 String()
  • Number() 轉換成數字,parseInt() 轉換成整數,parseFloat()轉換成浮點數。
  • Boolean()
var test = parseInt(「blue」); //returns NaN
var test = parseInt(「1234blue」); //returns 1234
var test = parseInt(「22.5」); //returns 22
var test = parseFloat(「1234blue」); //returns 1234
var test = parseFloat(「22.5」); //returns 22.5

 

(2)隱式轉換(隱式轉換一般發生在運算符加減乘除,等於,還有小於,大於。。。)spa

  • 字符串加數字,數字就會轉成字符串 100+‘10’=‘10010’
  • 數字減字符串,字符串轉成數字。若是字符串不是純數字就會轉成NaN。字符串減數字也同樣。兩個字符串相減也先轉成數字。
  • 乘,除,跟減的轉換也是同樣
console.log(10+'20') //2010
 console.log(10-'20')//-10 number
console.log(10-'one') //NaN not a number
console.log(10-'101a') //NaN
console.log(10*'20') //200 number
console.log('10'*'20') //200 number
console.log(20/'10') //2 number
console.log('20'/'10') //2 number
console.log('20'/'one') //NaN

==:等同,比較運算符,兩邊值類型不一樣的時候,先進行類型轉換,再比較;prototype

===:恆等,嚴格比較運算符,不作類型轉換,類型不一樣就是不等;code

Object.is()ES6新增的用來比較兩個值是否嚴格相等的方法,與===的行爲基本一致。regexp

 

Object.is(),其行爲與===基本一致,不過有兩處不一樣:htm

 

  • +0不等於-0
  • NaN等於自身。
  • +0 === -0 //true
    NaN === NaN // false
     Object.is(+0, -0) // false
    Object.is(NaN, NaN) // true

什麼時候使用==、===: 用 if(obj.a==null) 代替  obj.a===null || obj.a===undefined,其餘狀況用===。

關於== :

字符串和數字比較時,字符串轉數字

數字與布爾比較時,布爾轉數字(一、0)

字符串和布爾比較時,二者轉數字

console.log(undefined==null) //true
console.log('0'==0) //true 字符串轉數字
console.log(0==false) //true 布爾轉數字
console.log('0'==false) //2個都轉成數字
console.log(null==false) //false
console.log(undefined==false)//false

關於===:

類型不一樣:false

類型相同:NaN不等於NaN

     new Object 不等於 new Object 

 4. 類型檢測

typeof  不管引用的是什麼類型的對象,它都返回 「object」。

這就須要用到instanceof來檢測某個對象是否是另外一個對象的實例。

instanceof 運算符用來測試一個對象在其原型鏈中是否存在一個構造函數的 prototype 屬性。

語法:object instanceof constructor

參數:object(要檢測的對象.)constructor(某個構造函數)

 5. 封裝函數實現類型判斷

function type (obj) { var cache = { '[object Number]': 'number', '[object Array]' : 'array', '[object Object]' : 'object', '[object String]' : 'string', '[object Boolean]' : 'boolean', '[object Null]' : 'null', '[object Undefined]' : 'undefined', '[object Function]' : 'function', '[object RegExp]' : 'regexp' } return cache[Object.prototype.toString.call(obj)]; }

 6. 內置函數(數據封裝類對象)

Number String Boolean Object Array Function Date RegExp Error

相關文章
相關標籤/搜索