JavaScript笔记(一)数据类型与检测数据类型的方法

JS数据类型及typeof的底层机制
1: “原始值类型”(基本数据类型/值类型)
 	number: NaNInfinity、正常数字
 	string: 普通字符串、模板字符串
 	boolean: truefalse
 	null: 表示空,null 代表空值,一个空的对象指针
 	undefined: 表示变量被声明了,但是没有赋值,就等于 undefined
 	Symbol: 表示唯一值
 	1) Symbol('hello') === Symbol('hello') // false
 	2) 对象中添加唯一的属性
 	let obj = {
	  [Symbol('only')]: 100
	}
	Symbol.iterator: for of循环的底层处理方法
	Symbol.toStringTag: Object.prototype.toString.call()的底层原理
	Symbol.hasInstance: instanceof的底层原理
	Symbol.toPrimitive: 获取原始值【数据类型转换、比较】的底层原理
	Symbol的核心在底层机制上
 	bigInt: 大数
     JS有最大、最小数字限制
	 - 最大安全数字: console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991
	 - 最小安全数字: Number.MIN_SAFE_INTEGER // -9007199254740991
	服务端返回一个数字并且数字超过了最大安全数
	 + 如果只需要展示出来,把服务端返回的数字转为字符串就可以了
	 + 但是如果需要运算,需要用BigInt的处理
2: 对象数据类型
   1) object
	+ {} 纯对象
	+ [] array
	+ /^$/ 正则RegExp
	+ new Date()
   2) function函数类型【可执行对象】typeof function() {} 'function'

typeof数据类型检测

typeof 数据 => 返回的结果是字符串类型 , “类型” 
typeof NaN // "number"
typeof Infinity // 'number'
typeof null // 'object'
typeof undefined // 'undefined'
typeof "" // "string"
typeof Symbol() // 'symbol'
typeof 10n // 'bigint'
typeof {} // "object"
typeof [] // "object"
typeof /^$/ "object"
typeof new Date() // "object"
typeof function() {} // "function"
typeof (() => {}) // "function"
typeof function* (){} // "function"
typeof检测数据类型的特殊情况: 
1.typeof null => "object"
2.检测对象的数据类型,除了可执行对象(函数: 能够调用call方法的 普通函数、构造函数、箭头函数、生成器函数)检测出来的结果是“function,其余的结果都是“object”

为啥typeof null 是“object”为啥?
typeof检测数据类型的底层机制:
浏览器在识别编译typeof null代码的时候解析成 C++语言 能够识别的,浏览器是用C++开发的
 + 所有数据类型在计算机中都是按照二进制值存储的,
 + 如果是整数在计算机中按照二进制存储的值是以1开始的,
 + 如果是浮点数(小数)在计算机中按照二进制存储的值是以010开始的,
 + 如果是字符串在计算机中按照二进制存储的值是以100开始的,
 + 如果是布尔值在计算机中按照二进制存储的值是以110开始的,
 + 如果是对象在计算机中按照二进制存储的值是以000开始的,
 + 如果是undefined在计算机中按照二进制存储的值是以-2^30开始的,
 + 如果是null在计算机中按照二进制存储的值是以00000开始的,
 + 整数:1 , 浮点数:010, 字符串:100, 布尔值: 110, 对象: 000, undefined: -2^30, null: 000000
typeof检测数据类型的底层机制(重点): typeof底层机制就是判断这些二进制的值,如果是以000开头,都是对象【特殊:排除函数】返回的是"object",此时null也是以000开头,所以返回的也是“object”。通过这些值来判断数据类型、
优点: typeof它的稳定性与性能也是很好的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值