当前位置: 首页 > news >正文

装箱和拆箱(js的问题)

装箱:基本数据类型 -> 引用数据类型

var num = 123;
var numObj = new Number(123);console.log(typeof num) // number
console.log(typeof numObj) // object

拆箱:引用数据类型 -> 基本数据类型

var numObj = new Number(123);console.log(numObj.valueOf()) // 123console.log(typeof numObj.valueOf()) // number

拆箱操作原理:

内部执行toPrimitive(input, type)
input 传入的值
type 值类型1. 如果是原始类型的值直接返回
2. 如果不是,调用 input.valueOf() 是原始类型就返回
3. 如果不是,继续调用  input.toString() 是原始类型就返回
4. 报错
valueOf()  有原始类型的值返回,没有返回对象本身
toString() 对象[object type] type:对象类型

例题1:

console.log([] + [])
<empty string>// 分析:
console.log([])
Array []console.log([].valueOf())
Array []console.log([].toString())
<empty string>

例题2:

console.log([] + {})
[object Object]// 分析:
console.log({}.valueOf())
{}console.log({}.toString())
[object Object]// 交换位置,{}可能被识别为代码块
console.log({} + [])
[object Object] 或 0console.log(+ [])
0console.log(+ '')
0console.log(+ {})
NaN

相关文章:

  • 在 Laravel 中,清空缓存大全
  • 神经网络:深度学习优化方法
  • 制造行业定制软件解决方案——工业信息采集平台
  • Kafka怎么保证消息发送不丢失
  • 那些年的随笔
  • 第一次记录QPSK,BSPK,MPSK,QAM—MATLAB实现
  • Unity内置的四种渲染管线简介
  • Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测
  • 【c++】string类的使用
  • 实在没货,简历(软件测试)咋写?
  • SpringSecurity6 | 失败后的跳转
  • Tomcat日志乱码了怎么处理?
  • Qt/QML编程学习之心得:QML和C++的相互调用(十五)
  • 蓝牙物联网室内定位系统解决方案
  • 交友系统设计:哪种地理空间邻近算法更快?
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 08.Android之View事件问题
  • create-react-app做的留言板
  • Docker: 容器互访的三种方式
  • echarts花样作死的坑
  • ES6 学习笔记(一)let,const和解构赋值
  • Javascript Math对象和Date对象常用方法详解
  • Less 日常用法
  • mysql中InnoDB引擎中页的概念
  • Nacos系列:Nacos的Java SDK使用
  • nodejs调试方法
  • Object.assign方法不能实现深复制
  • python 学习笔记 - Queue Pipes,进程间通讯
  • python 装饰器(一)
  • React+TypeScript入门
  • 二维平面内的碰撞检测【一】
  • 关于springcloud Gateway中的限流
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何用vue打造一个移动端音乐播放器
  • 提醒我喝水chrome插件开发指南
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 学习笔记:对象,原型和继承(1)
  • 怎么把视频里的音乐提取出来
  • 终端用户监控:真实用户监控还是模拟监控?
  • 数据库巡检项
  • ​水经微图Web1.5.0版即将上线
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 数论-逆元
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (09)Hive——CTE 公共表达式
  • (NSDate) 时间 (time )比较
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程