JS數據類型與類型轉換


1. 數據類型

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

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

2. 判斷類型(typeof)

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

  • 值類型 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)隱式轉換(隱式轉換通常發生在運算符加減乘除,等於,還有小於,大於。。。)

  • 字符串加數字,數字就會轉成字符串 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

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

===:恆等,嚴格比較運算符,不做類型轉換,類型不同就是不等;

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

 

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

 

  • +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,其他情況用===。

關於== :

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

數字與布爾比較時,布爾轉數字(1、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM