javascript-数据类型

02-JavaScript-内部JS、外部JS、数据类型、关键词 内部JS示例");// 在页面加载完成后自动弹出提示框 阅读详情

js 共有八种数据类型,除了 object 为复杂数据类型(细分类型有 Array/Function/Set/Map/…),其余七种都是基本数据类型,没有挂载属性和方法。基本数据存储于栈空间;复杂数据存储于堆空间,将地址存储于栈空间

分类

围绕原始数据类型创建一个显式包装器对象从 ECMAScript 6 开始不再被支持。 然而,现有的原始包装器对象,如 new Boolean、new String 以及 new Number,因为遗留原因仍可被创建

Q&A

为什么 typeof null === 'object'?

不同的对象在底层都表示为二进制,js 早期实现版本中,如果二进制前三位为 000 的话会被判断为 ‘object’,null 的二进制表示全为 0,自然前三位也是 0,所以执行 typeof 时会返回 ‘object’

Number(a) 和 new Number(a) 的区别

  • Number(a) 会将 a 转换为 number 数据
  • new Number(a) 会创建一个对应 Number 类型的包装对象。包装对象有 Number、String、Boolean

详见 https://www.cnblogs.com/thinking-better/p/5330120.html

为什么部分原始类型能调用方法,比如 'test'.length

js 执行到'test'.length 时,会将 'test' 转化为 new String('test'),详见 http://es5.github.io/#x10.4.3
不过 2.toString() 会报错,原因是执行语句的时候会优先将点操作符解析为浮点数字面值的一部分,可以换成 2..toString()/2 .toString()/(2).toString()

null 和 undefined 的区别

详见 https://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

类型检测

参考 四种判断数据类型方法的优缺点

  • typeof。检测部分原始数据类型(number、string、boolean、symbol、undefined、bigint)和 function,其余返回 ‘object’
  • instanceOf。检测派生类型,原理是通过原型链判断。有以下缺点
    • 无法跨 iframe 工作
    • 不能正确判断 Array.prototype
    • { __proto__: Array.prototype } instanceof Array // true
  • Object.prototype.toString.call。通过 [[Class]] 类属性判断,但无法区分自定义对象类型;并且是装箱操作,会产生临时对象

一些特殊的情况如下:

typeof null; // "object"
typeof BigInt(1); // "bigint"
typeof undefined; // "undefined"
null === undefined; // false
null == undefined; // true
isNaN(1 + null); // false
isNaN(1 + undefined); // true

[译]JavaScript:如何判断值的类型

Q&A

怎么判断数组?

  • Array.isArray()
  • Object.prototype.toString.call
  • instanceof(不建议)

怎么判断 plain object?

plain object 指的是通过字面量形式或者 new Object() 形式定义的对象,可以通过以下方式判断

function isPlainObject(obj) {
  if (typeof obj !== "object" || obj === null) {
    return false;
  }
  let temp = obj;
  while (Object.getPrototypeOf(temp) !== null) {
    temp = Object.getPrototypeOf(temp);
  }
  return Object.getPrototypeOf(obj) === temp;
}

instanceof 能否判断基本数据类型?

可以,通过重定义 intanceof 方法实现

数据转换

显式转换

  • toNumber:Number、parseInt、parseFloat
  • toString:String、toString
  • toBoolean:Boolean、!!、!、||、&&

隐式转换

  • ==
    • 两两复杂数据类型对比,会比较地址是否一致
    • 复杂数据类型和基础类型对比,复杂数据类型要转换为 string,依次调用 valueOf、toString,如果对比的基础数据类型是 number 或 boolean,还需要转换为 number 对比
  • toNumber。+[string]
  • toString。''+[number]

数据比较

  • ==
  • ===
  • Object.is。对比严格相等,会处理一些特殊情况,比如 NaN、-0 和+0 不再相等…

最后

JS学习笔记五——JavaScript 数据类型 JavaScript 数据类型 一、数据类型介绍 二、基本数据类型 三、引用数据类型 四、数据类型转换 一、数据类型介绍 JS 中分为基本数据类型和引用数据类型,基本数据类型中又细分为数值类型、字符串类型、布尔类型和空类型。 JS 中要想检测变量的数据类型,需要使用 typeof 关键字,其语法为:typeof 要检测的变量;所得结果便是该变量存储的数据对应的数据类型。 注意:空类型中,undefined 的数据类型是 undefined,而 null 的数据类型是 object。 阅读详情

相关推荐

数字IC后端实现之快速获取innovus中drv violation的所有net list

数字IC后端设计实现之快速获取innovus中drv violation的所有net list

weixin_37584728的博客 3350

JavaScript之六大数据类型(不包括Symbol)

本文根据(JavaScript高级程序设计(第3版))总结 JavaScript 数据类型 JavaScript 有6中数据类型——Undefined,Null,Boolean,Number,String和Object ES6中有7种, 多了一种数据类型Symbol, 本文不涉及. Undefined表示未定义,Null表示空,Boolean表示布尔值,Number表...

让世界更美好! 4489

Cursor AI编程工具保姆级安装指南:从下载到中文界面设置(含免费额度说明)

本文提供Cursor AI编程工具的保姆级安装与设置教程。详细指导从官网下载、安装到中文界面切换的每一步,并重点说明其每月500次高级模型调用的免费额度策略。通过个性化设置与核心插件推荐,帮助开发者快速上手,提升AI辅助编程效率。

weixin_29191761的博客 673

【JavaScript】一篇文章,带你拿捏JS中的数据类型

JavaScript有8种数据类型:7种基本类型(String、Number、Boolean、null、undefined、Symbol、BigInt)和引用类型Object。基本类型存储在栈内存中,引用类型存储在堆内存中,栈中保存引用地址。字符串不可变,数组可变;数字采用IEEE754标准,存在精度问题;布尔值用于逻辑运算;null表示空值,undefined表示未赋值;Symbol创建唯一标识符;BigInt处理大整数。引用类型包括对象、数组、函数等。内存分为代码空间(存储代码)、栈空间(存储基本类型和

sunshine_dd的博客 1479

新手避坑指南:用PIC16F15355开发板和MCC完成第一个UART通信项目

本文为新手提供了使用PIC16F15355开发板和MPLAB代码配置器(MCC)实现首个UART通信项目的完整指南。通过图形化配置系统时钟、UART参数并自动生成驱动代码,手把手教学如何避开常见陷阱,快速完成从环境搭建、代码编写到调试输出的全流程,助力开发者高效入门PIC单片机开发。

bash7scripter的博客 727

游戏开发实战:如何用旋转矩阵实现2D角色平滑转向(附Unity代码)

本文深入探讨了在Unity游戏开发中,如何运用旋转矩阵原理实现2D角色的平滑转向。文章从核心理论出发,提供了计算目标旋转、实现平滑插值(Lerp与SmoothDamp)的完整C#代码,并解决了与动画系统、物理引擎协同的常见难题,帮助开发者提升游戏操作手感与视觉流畅度。

weixin_29057237的博客 289

【JavaScript】(二) JS数据类型

目录数据类型1、数据类型简介1.1 变量的数据类型1.2 数据类型的分类2、 简单数据类型2.1 基本数据类型2.2 数字型 Number2.2.1 数字型进制2.2.2 数字型范围2.2.3 数字型三个特殊值2.2.4 isNaN()2.3 字符串型 String2.3.1 字符串引号嵌套2.3.2 字符串转义符2.3.3 字符串长度2.3.4 字符串拼接2.3.5 字符串拼接加强2.4 布尔型 Boolean2.5 Undefined 和 Null3、 获取变量数据类型3.1 获取检测变量的数据.

weixin_48650082的博客 2084

18650锂电池充放电测试全流程:从实验室到实际应用的避坑指南

本文详细介绍了18650锂电池充放电测试的全流程,从实验室设备选型到实际应用中的常见问题解决方案。涵盖测试前的准备工作、标准测试流程执行、动态工况测试以及数据深度分析方法,为电池测试工程师和科研人员提供实用的避坑指南。特别针对电压平台异常和温度异常等关键问题,提供了专业的诊断与解决措施。

weixin_30790841的博客 546

【JavaScript用法】JavaScript(JS)的基本语法(JS数据类型,JS变量,JS运算符,JS流程控制语句)

JavaScript(JS)的基本语法 目录 JavaScript(JS)的基本语法 一. 与html结合方式 二. 注释 三. 数据类型: 四. 变量 五. 运算符(和Java有点类似) 六. 流程控制语句(和JAVA类似): 七. JS特殊语法: 一. 与html结合方式 1. 内部JS:定义<script>,标签体内容就是js代码(...

No8g攻城狮的博客 5106

从入门到精通:dirmap 高级 Web 目录扫描实战指南

本文提供了一份从环境搭建到高级配置的dirmap Web目录扫描实战指南。详细解析了工具安装、核心配置文件dirmap.conf的深度调优,包括递归扫描、四种扫描模式(字典、爆破、爬虫、Fuzz)的实战应用,并演示了分阶段资产发现的完整工作流程,帮助安全人员高效发现隐藏目录与敏感文件。

rnn9storyteller的博客 482

别再瞎猜了!三角形接法PMSM的相电流到底怎么算?实测线电流转换公式与避坑指南

本文深入解析三角形接法永磁同步电机(PMSM)在FOC控制中的相电流计算误区,提供实测线电流转换公式与避坑指南。针对矢量控制系统中常见的√3换算错误,详细阐述正确的电流重构算法、硬件采样要点及软件优化技巧,帮助工程师实现精确控制并避免电机损坏。

weixin_30367873的博客 467

JS学习篇(二) JavaScript七种数据类型

要了解一门语言,首先要了解它的数据类型有哪些?他们之间有什么关系?能否互相转换等。 目前,JavaScript(下称JS)中有七大数据类型,它们分别是: 1. Boolean 布尔型 2. Null 空 3. Undefined 未定义 4. Number 数字型 5. String 字符串型 ...

豪阁的个人博客 1853

【ARXML专题】-2-创建一个Classic CAN(经典CAN2.0)/CANFD的系统描述ARXML文件

目录 1 创建一个AUTOSAR系统描述 2 物理层命名以及创建ECU 3 新建一个Frame 4 新建一个PDU 5 新建一个signal 6 结尾 AUTOSAR System Description Network Explorer是一个文件编辑器,支持可视化和编辑系统描述的AUTOSAR系统描述文件和ECU摘录的通信内容,它支持架构版本4.0.3、4.1.2、4.2.1、4.2.2和4.3.0。AUTOSAR系统描述(ARXML)文件是基于XML的文件格式,描述网络通信的元素...

「汽车电子助手」的博客 1万+

JavaScript 学习手册二:JS 数据类型

第1关:JavaScript 数据类型介绍 任务描述 本关任务:在函数 objectTest() 内部定义了六个变量 a、b、c、d、e、f,并已经赋值,你需要判断它们各是什么数据类型。变量 aType、bType、cType、dType、eType、fType 分别表示上面六个变量的数据类型的名字,你需要给他们赋值。比如变量 a 如果是数字类型,需要给变量 aType 赋值字符串 number。可选的数据类型名如下: number、string、bool、object、undefined 和 arra

weixin_54327001的博客 8432

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【JavaScript基础】JS中的数据类型

基本数据类型 Js中的基本数据类型有五种:Undefined、Null、Boolean、Number、String 1. Undefined Undefined类型只有undefined一个值,在使用var声明变量但是未进行初始化的时候,该变量的值就是undefined。 2. Null Null类型也同样只有null一个值,表示一个空对象指针。undefined其实也是派生自null值的,但是null和undefined的含义完全不同。 3. Boolean Boolean类型有true和false两个值

VoidD的博客 312

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaScript数据类型和转化——JS

目录 1.数据类型 1.1为什么需要数据类型 1.2变量的数据类型 1.3数据类型分类 2.模板字符串(ES6新增),——模板字面量 2.1解析变量 2.2字符串可以换行 2.3调用函数 3.typeof和字面量 3.1typeof的使用 3.2字面量 4.数据类型的转换 4.1什么是数据类型 4.2转换为字符串类型 4.3转换为数字型 4.4转换为布尔型 1.数据类型 1.1为什么需要数据类型 因为不同数据所占用的存储空间不同,为了便于把数据分成所需内存大小

孙宇航的博客 1228

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript系列-07 JS数据类型之undefined类型

javaScript系列 JS的数据类型 文章目录javaScript系列前言一、undefined数据类型1.1简单了解 前言 虽然js在变量声明的时候无需指定数据类型,但是在赋值的时候,每个数据还是有属于自己的数据类型。所以还是有了解的必要 一、undefined数据类型 1.1简单了解 Undefined类型只有一个值,这个值就是 undefined 当一个变量没有手动赋值,系统默认赋值undefined 或者也可以给一个变量手动赋值undefined。 <script typ

m0_46222379的博客 252

JS初识 JavaScript变量 数据类型

变量作用域:分为全局作用域和局部作用域,函数外部和函数内部使用var声明的变量写在函数内部就是局部变量 仅当前作用域可见,声明在函数外部的变量就是全局变量 所有作用域可见,写在函数内部但是前面不加声明变量关键字就是全局变量。值类型(基本数据类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(唯一)、bigInt(+n)。注释、变量、操作符、流程控制语句、数组、对象、函数....的轻量级,解释型或即时编译型的编程语言。

qq_53402777的博客 334

Js高级总结1 JavaScript数据类型

typeof:返回数据类型的字符串表达,可以判断 undefined 数值 字符串 布尔值 function,不能判断 null object array。test.call/apply(obj):obj.test(),让一个函数成为任意指定对象的方法进行调用。n个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据。2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一引用变量依然指向前一对象。所有函数内部都有一个变量this,它的值是调用函数的当前对象。

weixin_54372875的博客 1070

【JavaScript】基础内容,HTML如何引用JavaScript, JS 常用的数据类型

注意数组返回是:object。

xudahai513的博客 628

初识JS/JavaScript及其数据类型

1.ECMAScript 核心js 基础语法和内置对象函数。2.DOM(Document Object Model)文档对象模型。3.BOM(Browser Object Model)浏览器对象模型。js是一门函数优先,具有原型编程的一门需要解释器解析的编程语言。

狗头苏丹的博客 367

【JavaScript】JS中两种数据类型的传参

简单介绍【JavaScript】中两大数据类型的传参过程

一文不值的博客 644

JavaScript之JS的数据类型

前言 JavaScript一共有6中数据类型: 基本数据类型(5):字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、空(Null)、未定义(Undefined) 复杂数据类型(1):对象(Object) 注意:Array、Date、Math、Error Set(ES6).....都是属于Object中 一、JS数据类型概述 1.1 简介 原始类...

a878787877的专栏 229

javascript-js语法基础之数据类型

在学习JavaScript之前,应该先明白学习方向。ECMAScript(核心语言规范)、DOM(文档对象模型) 和 BOM(浏览器对象模型)。而这篇文章主要讲解ECMAScript(核心语言规范),即js语法基础。js的变量。

2303_76454687的博客 942

【JavaScript】JS数据类型检测的方法详解

JavaScript数据类型检测方法全面解析 摘要:本文系统介绍了JavaScript中的数据类型检测方法,包括基础类型与引用类型的存储差异,以及四种核心检测方法:typeof操作符(适合基础类型但存在null误判)、instanceof运算符(专用于引用类型检测)、constructor属性(易受重写影响)和Object.prototype.toString.call()(万能精准检测法)。通过对比表格分析各方法的优缺点,并提供了表单验证、API数据处理等实战案例。

1259

【JS】——JavaScript数据类型基础

软绵绵

王金龙 1272
下一篇: javascript-不常见的数据类型
__lucas
博客等级 码龄9年 329粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值