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