js类型转换

article/2025/10/8 6:23:46

在这里插入图片描述
NaNi???
在这里插入图片描述

一、显性类型转换

强制类型转换主要是指通过String、Number和Boolean等构造方法手动转换成对应的字符串、数字和布尔值。

1.1 转为字符串

1.1.1 原始类型转字符串

原始类型字符串
string :‘str’“str”
number : 123“123”
Boolean“true”/“false”
null“null”
undefined“undefined”

1.1.2 对象转字符串

1、如果对象有toString()方法,则调用toString()方法,如果返回原始值,则按照原始值转换规则转换成字符串。

2、如果对象没有toString()方法或者toString()方法返回的不是原始值,则调用valueOf()方法,如果返回原始值,则按照原始值转换规则转换成字符串

3、否则抛出错误:Cannot convert object to primitive value

常见对象的toString():默认是"[object Object]"

  • 数组:将每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串 [1,2] “1,2”

  • 函数 :将函数转换成源代码字符串function(){} “function(){}”

  • 日期:返回日期和时间字符串new Date() “Thu Aug 13 2020 14:08:59 GMT+0800 (中国标准时间)”

  • 正则:正则表达式字符串new RegExp("[^xyz]") “/[^xyz]/”

举例验证:

var obj = {

toString() {return {}},valueOf() {return {}}

}

1.2 转为数字

1.2.1 原始类型转数字

原始类型数字
true/false1/0
null0
undefinedNaN
空字符串0
数字字符串:“2.333”2.333
不可完全解析为数值的字符串NaN

1.2.2 对象转数字

1、如果对象有valueOf()方法,调用valueOf()方法,如果返回原始值,则按照原始值转换规则。

2、如果没有valueOf()方法或valueOf()返回的不是原始值,则再调用toString()方法,如果原始值则按照原始值转换规则。

3、否则,则抛出错误:Cannot convert object to primitive value

大多数对象的没有原始值,valueOf()返回对象本身,例数组,函数,正则

日期会返回 1970年1月1日以来的毫秒数。

1.3 转为布尔值:

除以下几种情况返回false,其他都返回true

false、null、 undefined 、 ‘’ 、 NaN 、 0(+0、-0)

二、自动(隐性)类型转换

自动类型转换就是不需要人为强制的进行转换,js会自动将类型转换为需要的类型,所以该转换操作用户是感觉不到的,因此又称为隐性类型转换。自动类型转换实际上和强制类型转换一样,也是通过String()、Number()、Boolean()等构造函数进行转换,只是该操作是JS自己自动完成的而已。自动类型转换的规则和强制类型转换的规则一致。

2.1转为字符串

字符串自动转换主要表现为字符串的拼接,字符串和其他类型用加号(+)拼接时,其他类型都自动转换为字符串。

'str' + 1 ====> "str1"

'str' + 'str' ====>"strstr"

'str' + null ====>"strnull"

'str' + undefined ====>"strundefined"

'str' + true ====>"strtrue"

'str' + {} ====>"str[object Object]"

2.2转为数字

在所有加减乘除等需要数字类型的地方,JS会自动转换成数字(除字符串与‘+’组合)。

      • / %

== 、 >= 、 <= 、 < 、>

'1' - '2' ====> -1

'1' - null ====>1

'1' - undefined ====>NaN

'1' - true ====>0

'1' - NaN ====>NaN

'1' * 'a' ====>NaN

'1' - {} ====>NaN

'1' + 222 ====> 1222

2.3转为布尔

下面的情况会发生 布尔值隐式强制类型转换。

(1) if (…) 语句中的条件判断表达式。

(2) for ( … ; … ; … ) 语句中的条件判断表达式(第二个)。

(3) switch,while (…) 和 do…while(…) 循环中的条件判断表达式。

(4) ? : 中的条件判断表达式。

(5) !

(6) 逻辑运算符 ||(逻辑或)和 &&(逻辑与)左边的操作数(作为条件判断表达式)。

判等:

==:

null、undefined 除了和自身或者彼此==, 剩下和谁都不==

NaN和谁都不==
在判断 == 时,要先Number() 将两个操作数强制转为 Number 类型

测验

欢迎讨论 特别最后一个

1.undefined 转为数字类型是什么

2.var obj = {

toString() {return {}},valueOf() {return undefined}

}

Number(obj) 输出什么?

3.console.log(‘str’+{})

console.log(null == undefined)

console.log(null == 0)

console.log(null == false)

console.log(null == NaN)

console.log(undefined== 0)

console.log(undefined== false)

console.log(undefined== NaN)

console.log(NaN== NaN)

5.转换为布尔类型为false的几种情况?
6.

console.log([]==![])

console.log({}==!{})

happy everyday~

在这里插入图片描述


http://chatgpt.dhexx.cn/article/tgTbJluY.shtml

相关文章

Axure 9.0.0.3701 授权码

产品经理主力工具 Axure 在2020年5月26日更新了最新的 3701 版本&#xff0c;具体更新如下&#xff1a; 很多小伙伴在更新后会出现之前的授权无法使用的情况&#xff0c;如果出现这种情况大家可以通过在产品栈查找相对应的版本进行获取最新的授权码。 获取地址&#xff1a;http…

Axure 8.0/9.0 注册码 激活码 授权码 License

先查版本号&#xff0c;根据版本号在下面的网址查找对应的授权密钥&#xff08;没有的话&#xff0c;可以试试相近版本&#xff09; https://7rp.cn/34

Axure 9.0.0.3704 授权码

产品经理常用工具软件 Axure 又更新啦&#xff0c;本次更新版本为 Axure RP 9.0.0.3704&#xff0c;具体更新如下&#xff1a; 如何查看版本号&#xff1a; 更新后效果&#xff1a; 很多小伙伴在更新到最新版本后之前的授权出现了失效的情况&#xff0c;下边栈长为大家准备了最…

全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权

文章目录 1. 文章引言2. 下载Axure93. 安装Axure94. Axure9中文5. Axure9授权 1. 文章引言 最近在学习原型图&#xff0c;针对画原型图的工具&#xff0c;反复对比墨刀、Axure、xiaopiu后&#xff0c;最终选择了Axure。 接下来&#xff0c;我便从Axure RP 9的下载、安装、中文…

Axure 8授权码

转自&#xff1a;Axure 8.1.0.3372亲测可用授权码 只为记录下 被授权人&#xff1a; zdfans.com 授权密钥&#xff1a; gP5uuK2gHiIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7FF3pAz7dTu8B61ySxli

Axure RP9授权码

axure rp9安装教程&#xff08;如需免费版安装包请点击此处&#xff09; 1.下载本站提供的压缩包进行解压 2.双击AxureRP-setup9.exe安装程序进行安装 3.点击下一步 4.勾选我同意&#xff0c;点击下一步 5.选择安装位置默认也可以 6.静静的等待安装 7.安装好后点击完成安装&…

combinations()函数(python)

itertools.combinations(iterable, r) 从可迭代对象iterable中选取r个单位进行组合&#xff0c;并返回一个生成元组的迭代器 定义 def combinations(iterable, r):# combinations(ABCD, 2) --> AB AC AD BC BD CD# combinations(range(4), 3) --> 012 013 023 123pool…

Combiner合并案例

Combiner合并案例 需求1. 需求说明2. 文件 案例分析1. 需求分析2. 输入数据3. 期望输出数据4. 实施方案&#xff08;1&#xff09;方案一&#xff08;2&#xff09;方案二 代码实现1. 基于wordcount案例2. 方案一3. 方案二 结果截图 需求 1. 需求说明 统计过程中对每一个MapT…

MapReduce的Combiner详解

核心意义 :减少集群之间的网络开销具体实现步骤 1.自定义一个Combiner 继承 reduce 重写reduce方法2.在 job 中设置:job.setCombinerClass(Combiner类.class) 注意: combiner 能够应用的前提是不能影响最终的业务逻辑&#xff0c;而且&#xff0c;combiner 的输出 kv 应该跟 …

Combiner和Partitioner

Combiner和Partitioner InputFormat & RecordReaders InputFormat 将输出文件拆分为多个 InputSplit,并由 RecordReaders 将 InputSplit 转换为标准的<key,value>键值对,作为 map 的输出。这一步的意义在于只有先进行逻辑拆分并转为标准的键值对格式后,才能为多…

hadoop使用combiner合并操作

前言 任务从MapperTask出来的时候,数据要暂存在一段缓存空间,然后ReducerTask再拉取这些数据进行处理,map到reduce中间的这一段操作,官方称作为 shuffle 通过前面的章节我们了解到,往往来说,MapperTask的任务数量是多于ReduceTask的,这是因为原始的待处理的文件可能很…

Combiners

Combiners 怎么理解combiners? 1、每一个map可能会产生大量的输出&#xff0c;combiner的作用就是在map端对输出先做一次合并&#xff0c;以减少传输到reducer的数据量。 2、combiner最基本是实现本地key的归并&#xff0c;combiner具有类似本地的reduce功能。 3、如果不用…

MapReduce快速入门系列(9) | Shuffle之Combiner合并

Hello&#xff0c;大家好&#xff01;博主上篇讲解了分区&#xff0c;这篇要讲的是合并操作。如何讲解这个章节呢&#xff1f;首先先对什么是合并进行解释&#xff0c;然后通过案例进行证明。 目录 一. Combiner合并的简单介绍二. 通过图片了解使用Combiner和不使用的区别三. 代…

MapReduce【Shuffle-Combiner】

概述 Conbiner在MapReduce的Shuffle阶段起作用&#xff0c;它负责局部数据的聚合&#xff0c;我们可以看到&#xff0c;对于大数据量&#xff0c;如果没有Combiner&#xff0c;将会在磁盘上写入多个文件等待ReduceTask来拉取&#xff0c;但是如果有Combiner组件&#xff0c;我们…

Mapreduce中Combiner的使用及误区

问题提出&#xff1a; 众所周知&#xff0c;Hadoop框架使用Mapper将数据处理成一个<key,value>键值对&#xff0c;再网络节点间对其进行整理(shuffle)&#xff0c;然后使用Reducer处理数据并进行最终输出。 在上述过程中&#xff0c;我们看到至少两个性能瓶颈&#x…

Hadoop中的MapReduce框架原理、WritableComparable排序案例实操(区内排序)、Combiner合并、自定义 Combiner 实现步骤

文章目录 13.MapReduce框架原理13.3 Shuffle机制13.3.7 WritableComparable排序案例实操&#xff08;区内排序&#xff09;13.3.7.1 需求13.3.7.2 需求分析13.3.7.3 案例实操13.3.7.3.1 增加自定义分区类13.3.7.3.2在驱动类中添加分区类 13.3.8 Combiner合并13.3.8.1 自定义 Co…

Hadoop实例学习(九)Combiner合并

目录 什么是Combiner本质 实例编写Mapper类编写Reducer类编写Driver类结果 什么是Combiner MapReduce中的Combiner就是为了避免map任务和reduce任务之间的数据传输而设置的&#xff0c;Hadoop允许用户针对map task的输出指定一个合并函数。即为了减少传输到Reduce中的数据量。…

MapReduce的combiner

MapReduce的combiner 每一个 map 都可能会产生大量的本地输出&#xff0c; Combiner 的作用就是对 map 端的输出先做一次合并&#xff0c; 以减少在 map 和 reduce 节点之间的数据传输量&#xff0c;以提高网络IO 性能&#xff0c;是 MapReduce 的一种优化手段之一。 combine…

MapReduce中Combiner的作用

问题提出&#xff1a; 众所周知&#xff0c;Hadoop框架使用Mapper将数据处理成一个<key,value>键值对&#xff0c;再网络节点间对其进行整理(shuffle)&#xff0c;然后使用Reducer处理数据并进行最终输出。 在上述过程中&#xff0c;我们看到至少两个性能瓶颈&#x…