一、js資料類型
1、分類
js的資料類型分為兩種:
- 基本資料類型:
、String
、Number
、Boolean
、Null
undefined
- 引用資料類型:
、Object
、Array
function
JS隻有
堆記憶體
結構,我們所說的 堆棧記憶體 是指這個堆記憶體中像棧記憶體的分離出來
2、基本資料類型
基本資料類型的存放方式,是存放在
棧記憶體
中,擁有以下特性:
基本資料類型的特點:一旦定義了值,就不會改變
var a = 123
a = 234
- 先在棧記憶體開拓一個空間,存放值 123
- 定義一個變量a,指向這個空間
- 然後在棧記憶體開拓一個空間,存放值 234
- 切斷 a的指向,讓a指向 234的空間
是以 123 這個空間的值,是不會改變的
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLy50VktWOxMGc5EjWwJ0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zROBlL5cDO4ADOxITMwMTOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3、引用資料類型
引用資料類型的存放方式,是存放在
堆記憶體
中,擁有以下特性:
- 操作對象的屬性,不會讓指針指向發生改變:a.name = '123’
- 操作對象本身,會導緻指向發生改變:a = {name:‘234’}
二、 typeof
傳回資料類型
typeof
1. 概念
typeof
傳回的資料類型有:
String
、
Number
、
Boolean
、
undefined
、
Object
、
function
一共6種
注意:
null 和 Array
傳回的是
Object
var a = function() {}
console.log(typeof '123') // String
console.log(typeof 123) // NUmber
console.log(typeof true) // Boolean
console.log(typeof undefined) // undefined
console.log(typeof {}) // Object
console.log(typeof a) // function
console.log(typeof null) // object
console.log(typeof [1, 2, 3]) // Object
2. 筆試題
如何用 原生js 判斷 Array / Object / Function ?
方法一:使用
toString.call
var a = function(){}
console.log(Object.prototype.toString.call([1, 2, 3])) // [object Array]
console.log(Object.prototype.toString.call({})) // [object Object]
console.log(Object.prototype.toString.call(a)) // [object Function]
方法二: 使用
instanceof
var a = function(){}
console.log([1, 2, 3] instanceof Array) //true
console.log(a instanceof Function) // true
console.log({} instanceof Object) // true
console.log({} instanceof Array) // false