JavaScript类型转换

详解Javascript数据类型的转换规则 一、数据类型 5种基本数据类型:Null/Undefined/String/Boolean/Number 1种复杂数据类型:Object 二、数据类型检测 传送门《JS中检测数据类型的几种方式及优缺点小结》 1、typeof 2、instanceof/constructor 3、Object.prototype.toString.call(value) 4、Object.prototype.toString 三、数据类型转换 JS内部提供不同数据类型的自动转换机制,在某处预期为某种类型而不是某种类型时,就会自动转换为预期类型,这就是我们常说的隐式转换。 1、强制类型转换 在了解隐式转换的规则前 立即下载

一些需要注意的数据类型:

  • NaN的数据类型是number
  • Array、Date、null的数据类型是object
  • 未定义变量的数据类型是undefined

自动转换类型:尝试操作一个 “错误” 的数据类型时,会自动转换为 “正确” 的数据类型。

 5 + null    // 返回 5         null 转换为 0     
 "5" + null  // 返回"5null"    null 转换为 "null"
 "5" + 1     // 返回 "51"      1 转换为 "1"  
 "5" - 1     // 返回 4         "5" 转换为 5

==运算符的隐式类型转换规则

1.类型转换:两个操作数的类型不同,js会尝试转换成相同的类型。

2.原始类型比较:两个操作数的类型都是原始类型(如数组、字符串、布尔值),它们会被转换成相同的类型,再进行比较。

3.null和undefined比较:被视为相等。

4.字符串和数字比较:js会将字符串转换成数字,再进行比较。如果字符串不能转换成有效的数字,则结果为false。

5.布尔值比较:一个是布尔值,一个非布尔值,则布尔值会被转换成数字,再进行比较。true为1,false为0。

6.对象和原始类型比较:对象通过ToPrimitive转换成原始类型,再进行比较。通常涉及到对象的valueOf()和toString()方法。

 ToPrimitive(obj, Number) ==> Number({})
 //1.如果 obj 是基本类型,直接返回
 //2.否则,调用 valueOf 方法,如果得到原始值,则返回
 //3.否则,调用 toString 方法,如果得到原始值,则返回
 //4.否则,报错

7.NaN比较:NaN与任何值比较都返回false,包括NaN自己。

在写代码时,最好使用===来避免隐式类型转换并确保类型和值都相等。

[] == ![]返回true

关系转换图如下:

image.png

[]与![]都是对象,!的优先级大于==,要先进行非运算。

!会进行两步操作:

  • 1.对!后面的操作数转换成布尔值
  • 2.将这个布尔值取反

则将[]转换成布尔值,根据官方文档可知,任何对象转换成布尔值都是true,所以![]为false。

则原式变为[] == false,一个是对象一个是布尔值,则都会转换成数字进行比较。[]经过ToPrimitive会被转换成字符串""。再将等号两边的字符串""和布尔值false转换成数字 0 ,得到 0 == 0 ,打印得到 true。

 //执行过程
 [] == ![]
 [] == !true // 将空数组这个对象类型转换成布尔值
 [] == false // ! 运算符对 true 进行取反
 '' == false // 对 [] 进行 ToPrimitive 操作,返回一个空对象 
 0 == 0 // 将等号两边都转换成数字类型
字符串转换成数字

js在将字符串转换成数字时,它会查看字符串的内容。如果表示一个有效的数字则会转换成数字,不是则转换成NaN。

Q:\t == 0是为什么?

  • 有些特殊含义的字符会被转换成数字0,\t \n \r在进行字符串转换数字时都是0。
  • 还有种说法是:字符串在toNumber()时会首先去除空格,再判断该数字是否为非数字。如果NaN,则结果为``NaN;如果字符串为空则结果为0。

可以多看看这张图:

image.png

下图是使用不同的值转换为数字,字符串,布尔值:

image.png

image.png

《机器学习》周志华_自学记录 第一章绪论## 1.1引言机器学习所研究的主要内容,是关于在计算机上从数据中产生"模型"(model)的算法,即"学习算法"(learning algorithm).在面对新的情况时(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜).如果说计算机科学是研究关于"算法"的学问,那么类似的,可以说机器学习是研究关于"学习算法"的学问.## 1.2基本术语:用于预测离散值,例如将样本分为“好瓜”或“坏瓜”。:用于预测连续值,例如西瓜的成熟度(如0.95、0.37)。 阅读详情

相关推荐

赴美参加学术会议办理流程

有幸能在研究生阶段获得学校资助出国参加学术会议,首先要感谢学校的支持,以及学院和实验室的各位老师~ 接下来说下参会整个准备过程: 本人在接到论文录用通知后,就开始办理相关手续。因为会议地点是美国夏威夷,而且录用通知时间与会议召开时间只隔两个月左右,所以接下来两个月时间要办好学校出国申请手续,赴美签证,因为专业原因,据说签证不好办,所以时间比较紧。学校出国申请和签证相关材料是并行进行的,赴美花费...

xingxin_xu的博客 3196

JS数据类型的转换规则

数据类型转换的规则 1 如果只有一个值,判断这个值是真还是假,遵循只有0,NaN,'',null,undefined这五个是假的,其余的都是真 2 如果是两个值比较是否相等,遵循以下规则: ![]->false []==[]->false //val==val 两个值可能不是同一个数据类型的,如果是两个等于号比较的话,会默认的进行数据类型转换 规则: 1 对象...

weixin_33786077的博客 239

保姆级教程:在STM32H750VBT6上跑起来CMSIS-DSP库(基于CubeMX+Keil)

本文详细介绍了在STM32H750VBT6微控制器上配置和运行CMSIS-DSP库的全过程,包括开发环境搭建、CubeMX工程配置、Keil工程设置以及DSP库的实际应用示例。通过FFT频谱分析和音频均衡器等实战案例,展示了如何利用STM32H750VBT6的硬件FPU加速DSP运算,提升实时信号处理性能。

weixin_30236595的博客 458

js中的类型转换机制(很详细,要收藏)

前面我们讲到,JS中有六种简单数据类型:undefined、null、boolean、string、number、symbol,以及引用类型:object 但是我们在声明的时候只有一种数据类型,只有到运行期间才会确定当前类型

常来常往,共同成长 1916

摩尔线程GPU实战:5分钟搞定AI模型部署(含Docker避坑指南)

本文详细介绍了摩尔线程GPU在AI模型部署中的实战应用,包括环境配置、Docker避坑指南及性能优化技巧。通过5分钟快速部署指南,帮助开发者高效利用摩尔线程GPU进行AI模型推理,特别针对常见兼容性问题提供解决方案,显著提升部署效率。

weixin_28736335的博客 454

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

JS中类型转换的规则

一、基本规则 1.null == undefined为true console.log(null == undefined); //true 2.NaN ==NaN 为fasle console.log(NaN == NaN); //false 3.布尔值在比较相等性之前先将其转换为数值——false转换为0,true转换为1 console.log(1==true); //true console.log(0==false); //true 4.剩下的都是转换为数字 console.log(!![]

wuliuqi62的博客 501

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 529

JS类型转换规则 与运算规则

JS 类型转换大致分为以下四种,如果想要对象转数字,那就让对象先转为 原始,然后再转为数字即可解决。在开发中我们会遇到输入的内容是字符串,而遇到商品数量等需要数字的就需要我们进行处理,处理如下。大家觉得这个逻辑能懂吗,我是没有懂,因此,我想到了下面的方法,深拷贝和浅拷贝,

虎康的博客 908

ROS局部路径规划器插件teb_local_planner流程梳理(上)

在我之前的文章《ROS导航包Navigation中的 Movebase节点路径规划相关流程梳理》中已经介绍过Move_base节点调用局部路径规划器插件的接口函数是computeVelocityCommands,接下来,我们就从这个函数入手梳理一下teb_local_planner功能包的工作流程。

慕羽★的博客 5165

LeRobot 官方论文:一个用于端到端机器人学习的开源库

本文介绍了一个名为LeRobot的开源库,旨在解决机器人学习领域的碎片化问题。该库提供了端到端的技术栈,包括统一的机器人中间件API、标准化的数据集格式(LeRobotDataset)、优化的推理栈以及多种最先进机器人学习算法的实现。LeRobot支持多种低成本开源机器人平台(如SO-10X、ALOHA-2等),通过共享中间件实现便捷的遥操作和数据收集。其数据集格式已广泛应用于社区,截至2025年9月已有16,000多个数据集公开共享。该库还支持流式处理大规模数据,降低了研究门槛。在模型方面,LeRobot

2506_90492529的博客 907

JavaScript 中的类型转换机制

JavaScript 中的类型转换机制

huihui_999的博客 685

【AI大模型应用开发】1.0 Prompt Engineering(提示词工程)- 典型构成、原则与技巧,代码中加入Prompt

Prompt典型构成、原则与技巧,以及OpenAI API重要参数解释,助你轻松入门Prompt

同学小张的博客 2581

【javascript】js类型转换

文章目录1. 基本类型转换2. 显示类型转换3. 对象转换为原始值 1. 基本类型转换 值 转为字符串 数字 布尔值 对象 undefined ‘undefined’ NaN false throws TypeError null ‘null’ 0 false throws TypeError true ‘true’ 1 new Boolean(true) false ‘false’ 0 new Boolean(false) “”(空字符串) 0 false new S

连通块的应用 406

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java和Js中的类型转换_JavaScript 类型转换

原标题:JavaScript 类型转换Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。 Java 数据类型在 Java 中有 5 种不同的数据类型:stringnumberbooleanobjectfunction3 种对象类型:ObjectDateArray2 个不包含任何值的数据类型:nullundefinedtypeof 操作符你可以使用 ...

weixin_31220971的博客 345

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[js点滴]Javascript类型转换的技巧

<div class="postBody"> <div id="cnblogs_post_body"><p>Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变。请看示例:</p> var n = 10; n = "hello CSSer!"; n = {};上面的示例中,首先声明n变量并初始化其值为10(整数类

图解AI 4951

JavaScript 类型转换

JavaScript 类型转换

QYgujingjing的专栏 487

web前端框架JS学习之JavaScript类型转换

通过该String()函数,将值true传递给参数,从而将布尔值转换为字符串。任何被解释为空的值(例如数字0,空字符串或未定义或NaN或null的值)都将转换为false。通过使用String()或,x.toString()可以将Boolean或number数据类型的值显式转换为字符串值,以确保的代码按预期运行。该split()方法将字符串拆分为子字符串数组,然后返回新数组,使用该split()方法通过以表示的空格字符分隔数组 " "。该toString()方法将数组转换为(逗号分隔)数组值的字符串。

xuezhangmen的博客 1421

javascript双等号引起的类型转换,js隐性类型转换步骤

一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。 二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1) 三、接着看双等号前后有没有字符串, 有三种情况: 1、对方是对象,对象使用toString()或者valueOf()进行转换; 2、对方是数字,字符串转数字;(前面已经举例) 3、对方是字符串,直接比较;

真红酱の小窝 1240

解决JavaScript精度灾难:decimal.js类型转换完全指南

在JavaScript开发中,你是否遇到过这样的困惑: ```javascript console.log(0.1 + 0.2); // 输出0.30000000000000004 ``` 这种精度误差源于JavaScript采用的IEEE 754双精度浮点数标准,在金融计算、电商价格等场景下可能导致订单金额错误、财务对账困难等严重问题。 decimal.js作为一个任意精度的Decimal类型

gitblog_00410的博客 517

【JavaScript】js隐式类型转换和显式类型转换

● 如果符号两侧都是字符串,不会将其转换为数值进行比较,而会分别比较字符串中字符的Unicode编码,而在比较字符编码时,是一位一位进行比较的,如果符号两侧第一位一样,则比较下一位。2、否则,如果输入的值是一个对象,则调用该对象的valueOf()方法, 如果valueOf()方法的返回值是一个原始值,则返回这个原始值。3、否则,如果输入的值是一个对象,则调用该对象的valueOf()方法, 如果valueOf()方法的返回值是一个原始值,则返回这个原始值。2、如果第一个操作数是真,直接返回第一个操作数。.

叶子yes的博客 1373

【JavaScript】j谈谈 js 中的类型转换机制

前面我们讲到,JSundefined、null、boolean、string、number、symbolobject但是我们在声明的时候只有一种数据类型,只有到运行期间才会确定当前类型let x = y?1 : a;上面代码中,x的值在编译阶段是无法获取的,只有等到程序运行时才能知道虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的,如果运算子的类型与预期不符合,就会触发类型转换机制强制转换(显示转换)自动转换(隐式转换)

一个前端开发者 381

【JS】javascript中的数据类型以及类型转换

一、数据类型分类: 基本类型6种 Number(数值): int、float、NaN、Infinity(除数为0) String(字符串) Boolean(布尔):true、false undefined(未定义):undefined null(空):null symbol(唯一)-- es6 引用类型种 Object(对象) 二、类型转换 进行类型转化的原因 数据之间的运算只有同类型之间的进行运算,如果不同类型之间存在运算的话,需要将其转换为同一种类型后再进行运算。 分类 (1)强制类型转换

qq_44742261的博客 799

(总结版)Javascript中的类型转换规则 以及 JS加法运算中的类型转换规则

一、其他值到布尔类型的值的转换规则? 以下这些是假值: • false • undefined • null • +0、-0 和 NaN • "" 假值的布尔强制类型转换结果为 false。从逻辑上说,假值列表以外的都应该是真值。 二、其他值到字符串的转换规则? Null 和 Undefined 类型 ,null 转换为 “null”,undefined 转换为 “undefined”, Boolean 类型,true 转换为 “true”,false 转换为 “false”。 Number 类型的值直

weixin_45727472的博客 882
上一篇: 力扣Hot100
下一篇: webpack基础配置及使用
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值