JavaScript系列-数据类型

ES6变量类型

JavaScript编程语言中,变量类型分为基本变量类型引用类型,两种变量类型的区别在于

  • 基本类型变量值存放于栈中,引用类型变量值存放于堆中
  • 基本类型赋值给其他变量,是将其值复制过去
  • 引用类型赋值给其他变量,复制的是地址值,两者指向同一个对象
//定义a和b两个基本变量,b的值改变影响a
let a = 10;
let b = 10;
b = 20
console.log(a)//10

//定义一个引用类型 obj1 ,obj2 与obj1 指向同一个地址,修改obj2 其实obj1 同一个对象
let obj1 = {a:10,,b:20}
let obj1= obj2 
obj2.a = 2;
console.log(obj1.a)//2
console.log(obj2.a)//2

image.png

image.png

1.基本变量类型

string

number

null

Boolean

undefined

symbol

image.png

2.引用类型

object

Function

Date

RegExp

Array

image.png

变量类型检测

对于类型的检测,有以下三种方案

1.基本类型的检测使用 typeof

  • typeof 可以检测出基本类型的大部分类型,除了null,typeof null 返回是’object’
  • 对于引用类型使用typeof ,返回的都是‘object’,因此无法使用typeof 检测引用类型

image.png

let a = 10;
let b ="123";
let c =true;
let d= undefined
let e = null
let f = Symbol("a")

function getType(name){
    return typeof name;
}

console.log(
getType(a),//"number"
getType(b),//"string"
getType(c),//"boolean"
getType(d),//"undefined"
getType(e),//"object"
getType(f),//"symbol"
)

2.引用类型检测使用 instanceof

  • instanceof 的原理是检测对象原型链上,是否存在构造函数的prototype属性
  • 基本类型不能直接使用此方法检测,如果是通过构造函数定义,可以检测出来,null和undefined也不行

image.png

使用例子
object instanceof construtor
检测object 原型链是否存在与construtor.prototype 一致的属性

let a = [1,2]
let b = function(){}
a instanceof Array //true
b instanceof Function //true

3.引用类型和基本类型检测通用方法 Object.prototype.toString.call(变量)

image.png

Object.prototype.toString.call("123")//"[Object String]"
Object.prototype.toString.call([1,2,3])//"[Object Array]"
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值