数据类型容易忽略的细节

简介: 数据类型容易忽略的细节

数据类型的陷阱

1. 是不是Object

function isObject(obj) {
  if(typeof obj === 'object') {
    return true;
  }
  return false;
}

第一个问题: . 上面的方法有什么问题?

typeof null // object

第二个问题:为什么typeof null返回的值是"object" ?

typeof原理

js 在底层存储变量的时候,会在变量的机器码的低位1-3位存储其类型信息: 对象:000 浮点数:010 字符串:100 布尔:110 ”。typeof直接根据变量值得内存标识符进行判断并返回的是对应字符串形式的值。

// 类型标记位

// 000: object

// 001: integer

// 010: double

// 100: string

// 110: boolean

第三个问题:为什么不修复这个问题?

注意: 现在的V8引擎不在这样判断数据类型,为了考虑兼容性没有修改,ES6提案修改这个bug但是没有通过。因为修改可能会造成一连串bug。

2.+转为数字

const print = console.log;
function toNumber(val) {
    const result = +val;
    print(result);
    return result
}
// 传统数据类型
toNumber(null) // NaN
toNumber(undefined) // NaN
toNumber(1) // 1
toNumber("123aa") // NaN
toNumber({}) // NaN
toNumber(true) // 1
// ES6的 bigInt和Symbol
toNumber(10n)
toNumber(Symbol.for("a"))

ES6的 bigInt和Symbol无法实现

TypeError: Cannot convert a BigInt value to a number

TypeError: Cannot convert a Symbol value to a number

为什么会这样?

兼容性问题,在ES5中完全兼容,但是在ES6的新类型中不兼容。

目录
相关文章
|
搜索推荐 安全 API
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
910 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
Shell Linux 开发工具
shell的介绍以及Linux权限的讲解
shell的介绍以及Linux权限的讲解
392 2
阿里云备案一次性可以备案多个网站吗?
是否支持一次性备案多个网站,主要取决于各省管局规定,一般来讲在阿里云ICP备案系统,是可以一次性备案多个网站的
2491 0
阿里云备案一次性可以备案多个网站吗?
|
编解码 Java Linux
Java调用ffmpeg进行视频转码
Java调用ffmpeg进行视频转码(windows或linux),以及后续的一些测试、调优
|
编解码
ArcGIS:(模型构建器实现)如何依据交通通达度和商业繁华度对城市的土地区位进行模拟评价?
ArcGIS:(模型构建器实现)如何依据交通通达度和商业繁华度对城市的土地区位进行模拟评价?
496 0
|
自然语言处理 Java C++
计算理论入门 1.1 命题逻辑
1.1 命题逻辑 原文:Foundations of Computation 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 一个命题是一个或真或假的陈述。
1336 0
|
8天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1324 6
|
7天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
1171 23
|
2天前
|
存储 人工智能 自然语言处理
阿里云千问办公官网登录入口:qwenwork.cn网页版免下载,注册送2000积分、登录每日再送100积分
千问办公(QwenWork)是阿里巴巴推出的一站式AI办公平台,定位"不止于对话,更注重交付"。它基于千问大模型,具备任务拆解与多步骤自动执行能力,用户一句话即可完成PPT生成、数据分析、网页搭建、视频剪辑、信息调研等复杂任务,覆盖网页端、桌面端及钉钉生态。网页版免下载,访问qwenwork.cn注册即得2000积分,每日登录再送100积分。个人版免费起用,另有付费版与企业版可选。