首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript类型转换总结与常见情况解析

类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转数字,对象布尔值等) 一、类型转换的分类 类型转换可以分为类型转换和显类型转换。...例如: var a = 42; var b = a + ""; // 强制类型转换 var c = String( a ); // 显强制类型转换 变量 b 而言,强制类型转换是的...而 String() 则是将 a 显示强制类型转换为字符串。 严格相等运算符(===)不会触发类型转换,所以它可以用来比较值和类型是否都相等。...对象转换类型,会调用内置的 [[ToPrimitive]]  函数,对于该函数来说,算法逻辑一般如下: 如果已经是原始类型了,那就不需要转换了 如果需要字符串类型就调用 x.toString(),...当然也可以重写 Symbol.toPrimitive,该方法原始类型时调用优先级最高: let a = { valueOf() { return 0 }, toString()

1.5K20

关于数据类型转换的面试题总结

3.说说什么是 显强制类型转换 和 强制类型转换?谈谈你对于二者的看法 4.将一个变量强制换为字符串,你能说几种方法? 5.通常的两种字符串的方法: String(a) 和 a+""。...3.说说什么是 显强制类型转换 和 强制类型转换?...强制类型转换往往是一些操作的附带产物,如if(){}中会将括号内的部分转换为布尔类型。...而关于”显“和”“是很主观的,如果+”123“你来说,你一眼就能看出这是将字符串”123“转换为数字的操作,那么这对于你来说就是显强制类型转换。...原因是加运算是强制类型转换,会对两端操作数进行ToPrimitive操作,前面已经说过,这里不再赘述。 这里有个经典的例子,就是ES6下对于Symbol类型值进行字符串转换。 ?

1.7K50
您找到你想要的搜索结果了吗?
是的
没有找到

数据类型转换看这篇就够了

因为 JS 本身是一门弱类型语言,以至于类型转换发生的频繁很高,本文旨在帮助大家梳理各种类型之间的相互转换,每一小节讲解转换前,还会跟大家介绍这些“老朋友” 数据转换分为显示转换和转换 显示转换:...作为构造器new 将产生新的对象,而作为函数,则产生字符串,如下所示?...类数组对象你可以看做一种“伪数组”,虽然它无法调用数组的方法,但是具备length属性,可以索引获取内部项的数据结构 4.3 日期ObjectNumber 将日期对象换为数字(时间戳的形式),...undefined无法转为数字,第一个调用返回NaN.第二个是null转为换为0所以是2 ,第三个是如果传入的参数是undefined会以默认值为准,所以是3 5.2 总结 不要对一个显变量的赋值...symbol不能与其他类型的值进行运算,会报错(即不能转换),但是部分可以显示转换为字符串或者布尔值 ?

4.4K20

JS进阶-数据类型的判断方式以及转换方式的汇总

答案最下方,看看你能作对多少 强制类型转换 强制类型转换方式包括 Number()、parseInt()、parseFloat()、toString()、String()、Boolean() 类型转换...// false 规则2 '' == null // false 规则2 '' == 0 // true 规则4 字符串转换成...Number之后再对比 '123' == 123 // true 规则4 字符串转换成Number之后再对比 0 == false // true...仅当 '+' 号两边都是数字,进行的是加法运算;如果两边都是字符串,则直接拼接,无须进行类型转换。 除了上述比较常规的情况外,还有一些特殊的规则,如下所示。...如果其中有一个是字符串,另外一个是 undefined、null 或布尔型,则调用 toString() 方法进行字符串拼接;如果是纯对象、数组、正则等,则默认调用对象的转换方法会存在优先级(下一讲会专门介绍

1.1K10

面试官:JavaScript的数据类型你了解多少?

返回 数据类型转换 日常的业务开发中,经常会遇到 JavaScript 数据类型转换问题,有的时候需要我们主动进行强制转换,而有的时候 JavaScript 会进行转换,转换的时候就需要我们多加留心...用加号操作符给一个值加上一个空字符串""也可以将其转换为字符串类型转换 凡是通过逻辑运算符 (&&、 ||、!)...// false 规则2 '' == null // false 规则2 '' == 0 // true 规则4 字符串转换成...Number之后再对比 '123' == 123 // true 规则4 字符串转换成Number之后再对比 0 == false // true...仅当 '+'号两边都是数字,进行的是加法运算;如果两边都是字符串,则直接拼接,无须进行类型转换。 除了上述比较常规的情况外,还有一些特殊的规则,如下所示。

61810

关于数据类型的一些小疑惑 ​

返回的原始值将被直接使用,而不会被强制换为数字或字符串。...因为我一直纠结在这节内容前面说的对象换为原始值的规则,死死地认为: 对象原始值都应该按照两条路线走,一条路线是转为字符串,一条路线是转为数字。...大概产生了这些疑问: 引文中第一段的最后一句“通过valueOf或toString返回的原始值将被直接使用,而不会被强制换为数字或字符串。”。我的疑惑是:为什么最后不会再强制转换了?...其实我上篇写到最后一小节转换的时候,已经提到了,不同运算符对于对象的转换规则是特殊的。 不同的使用场景中,javascript会根据实际情况进行类型的转换。...恒等运算符会首先判断数据类型是否一致,而==运算符不要求两个操作数类型一致,当两个操作数不一致,会按照一定的规则进行操作数的转换。

60420

Js 类型转换

因此你会看到一些教程文件上会区分为两大类对象,一类是 Date 对象,另一类叫 非Date(non-date) 对象。因为这两大类的对象进行转换为原始数据类型,首选类型恰好相反。...将 JSON 对象序列化为字符串也用到了 ToString 。...因为 toString() 42 这样的基本类型值不适用,所以 JavaScript 引擎会自动为 42 创建一个封装对象(包装类),然后对象调用 toString()。...从字符串强制类型转换为数字的情况 var a = [] var b = '0' console.log(a - b); //0 /** * -是数字减法运算a和b都不是number,都要强制换为数字...这也就是说 == 中 null 和 undefined 是一回事,可以相互进行强制类型转换: var a = null; var b; a == b; // true a == null; /

20.4K30

你不知道的JavaScript(中卷)一

D.强制类型转换 1.字符串和数字之间的强制类型转换 • 根据ES5规范,如果某个操作数是字符串或者能够通过以下步骤转换为字符串的话,+将进行拼接操作。...如果其中一个操作数是对象(包括数组),则首先调用ToPrimitive抽象操作,该抽象操作再调用[[DefaultValue]],以数字作为上下文 • 定制valueOf()和toString...()需要非常小心,a+””这种会先调用valueOf()再调用toString(),而String()则直接调用toString()结果可能会不同 2.强制类型转换为布尔 • if(....• 符号不能够被强制类型转换为数字(显都会产生错误),但可以被强制类型转换为布尔值(显都是true) E.宽松相等和严格相等 1....==比较两个不同类型的值时会发生强制类型转换,会将其中一或两者转换为相同的类型后再进行比较。注意:NaN!

1.2K20

JS类型转换难点面试题

js中的类型名的强制类型转换 Number(mix)、 String(mix)、 Boolean(mix) js中的类型转换的条件是什么?...转换函数:parseInt(string,radix)、parseFloat(string)、toString(radix) 构造方法:Number(mix)、Boolean(mix) 对象原始类型是根据什么流程运行的...对象原始类型,会调用内置的[ToPrimitive]函数,对于该函数而言,其逻辑如下: 如果有Symbol.toPrimitive()方法,优先调用再返回 调用valueOf(),如果转换为原始类型,...则返回 调用toString(),如果转换为原始类型,则返回 如果都没有返回原始类型,会报错 var obj = { value: 3, valueOf () { return...() { return '5' }, } console.log(obj + 1) // 输出51 注意 toString 返回的是一个字符串5 var obj = {

82840

深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇)

深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇) 值类型转换 • 将值从一种类型转换为另一种类型通常称为类型转换,分为 强制类型转换 和 显示强制类型转换。...var a = [1,2,3]; a.toString(); // 1,2,3 • JSON • 工具函数 JSON.stringify() 将 JSON 对象序列化为字符串也用到了 toString...• 将值转换时会遵循以下规则: • 使用 Number() 或 toNumber() 方法将一个字符串换为数字,如果字符串中出现非数字字符,则会返回 NaN。...强制类型转换 • + 运算符既能用于加法运算,也能用于字符串拼接。...• toNumber: 使用 Number() 或 toNumber() 方法将一个字符串换为数字,如果字符串中出现非数字字符,则会返回 NaN。

9800

【Java 从入坑到放弃】No 3. 变量与数据类型

中已经存在指向 “xxx” 的对象,所以直接在堆中创建一个字符串对象; 数据类型转换 对于基本数据类型,不同类型之间是可以相互转换的,但是需要满足一定的条件; 从小到大自动,从大到小强制。...b = a; // 高精度住哪低精度,由于 long 的范围比 int 大,所以需要强制 a = (int)b; 转换(自动类型转换) 当满足如下条件,如果将一种类型的数据赋值给另一种数据类型变量...,将执行自动类型转换: 两种数据类型彼此兼容; 目标数据类型的取值范围大于源数据类型; 一般而言,转换的规则是从低级类型数据转换为高级类型数据,对应规则如下: 数值类型:byte -> short...-> int -> long -> float -> double 字符类型整型:char -> int 显转换(强制类型转换) 那既然满足上述两个条件时会发生转换,那不满足同时我们又想进行数据类型转换...常见数据类型转换方法 字符串与其他类型之间的转换 其他类型 -> 字符串 调用类的串转换方法:X.toString(); 自动转换:"" + X; 利用 String 的方法:String.valueOf

1.1K20

《现代Javascript高级教程》类型转换

字符串进行操作,JavaScript会将字符串换为数字。...字符串进行操作,JavaScript会将字符串换为布尔值,非空字符串换为true,空字符串换为false。 需要注意的是,类型转换某些情况下可能会导致意外的结果。...对象转换 JavaScript中,对象进行类型转换时会根据一定的规则进行处理。对象类型转换通常涉及将对象换为字符串或将对象换为数字。...对象换为字符串: 当一个对象需要被换为字符串,JavaScript会尝试调用对象toString()方法。toString()方法是一个内置方法,它返回表示对象字符串形式。...]" 在上述例子中,对象obj会被换为字符串形式,调用toString()方法并返回了"[object Object]"。

19020

深入了解JS 数据类型

每个对象都有一个 toString() 方法,当对象被表示为「文本值」时或者当以期望「字符串」的方式引用对象,该方法被自动调用。...0 undefined 转换为 NaN true 转换为 1,false 转换为 0 字符串转换遵循数字常量规则,转换失败返回NaN **【注】**对象这里要先转换为原始值,调用ToPrimitive...一个数组加一个对象。加法会进行类型转换,规则是调用其 valueOf() 或 toString() 以取得一个非对象的值(primitive value)。...什么时候 Number 加法操作,遇到非字符串的基本类型,都会Number(「除了加法运算符,其他运算符都会把运算自动转成数值。」)...expression 宽松相等 == 相等于、全等都需要对类型进行判断,当类型不一致,宽松相等会触发转换。下面介绍规则: 对象对象类型一致,不做转换 {} != {} [] !

1.8K10

Java 中的变量与数据类型

中已经存在指向 “xxx” 的对象,所以直接在堆中创建一个字符串对象; 数据类型转换 对于基本数据类型,不同类型之间是可以相互转换的,但是需要满足一定的条件; 从小到大自动,从大到小强制。...b = a; // 高精度住低精度,由于 long 的范围比 int 大,所以需要强制 a = (int)b; 转换(自动类型转换) 当满足如下条件,如果将一种类型的数据赋值给另一种数据类型变量...,将执行自动类型转换: 两种数据类型彼此兼容; 目标数据类型的取值范围大于源数据类型; 一般而言,转换的规则是从低级类型数据转换为高级类型数据,对应规则如下: 数值类型:byte -> short...-> int -> long -> float -> double 字符类型整型:char -> int 显转换(强制类型转换) 那既然满足上述两个条件时会发生转换,那不满足我们又想进行数据类型转换...常见数据类型转换方法 字符串与其他类型之间的转换 其他类型 -> 字符串 调用类的串转换方法:X.toString(); 自动转换:"" + X; 利用 String 的方法:String.valueOf

51730

【面试利器】原生JavaScript灵魂拷问,你能答上多少(一)

Number数值数值的字符换表示Date毫米格式时间戳GMT格式时间字符串 调用优先级 转换时会自动调用 toString 和 valueOf 方法,两者优先级如下: 强制转化为字符串类型...,优先调用 toString 方法 强制换为数值类型,优先调用 valueOf 方法 使用运算符操作符情况下,valueOf 优先级高于 toStirng 对象的类型转换见下一问。...转换为boolean 显:Boolean 方法可以显将值转换为布尔类型 :通常在逻辑判断或者有逻辑运算符触发(|| && !)...string 类型 转化为 string 类型的本质:需要转换为string的部分调用自身的toString方法(null/undefined返回字符串格式的null和undefined) 当被转换值为对象...:number的类型转换比较复杂,需要转换的部分执行 Number: 比较操作(, =) 按位操作(| & ^ ~) 算数操作(+ - * / %) 注意:+的操作数存在字符串

86720

No 3. 变量与数据类型

数据类型转换 对于基本数据类型,不同类型之间是可以相互转换的,但是需要满足一定的条件; 从小到大自动,从大到小强制。...b = a; // 高精度住哪低精度,由于 long 的范围比 int 大,所以需要强制 a = (int)b; 转换(自动类型转换) 当满足如下条件,如果将一种类型的数据赋值给另一种数据类型变量...,将执行自动类型转换: 两种数据类型彼此兼容; 目标数据类型的取值范围大于源数据类型; 一般而言,转换的规则是从低级类型数据转换为高级类型数据,对应规则如下: 数值类型:byte -> short...-> int -> long -> float -> double 字符类型整型:char -> int 显转换(强制类型转换) 那既然满足上述两个条件时会发生转换,那不满足同时我们又想进行数据类型转换...常见数据类型转换方法 字符串与其他类型之间的转换 其他类型 -> 字符串 调用类的串转换方法:X.toString(); 自动转换:"" + X; 利用 String 的方法:String.valueOf

2.2K20

如何让 x == 1 && x == 2 && x == 3 等式成立

如果 x 和 y 指向同一对象,则返回 true。否则,返回 false。 null 和 undefined 之间的相等比较 null 和 undefined 之间的 == 也涉及强制类型转换。...根据规范,"42" 应该被强制类型转换为数字以便进行相等比较。...应用场景: JavaScript 中,如果想要将对象转换成基本类型,再从基本类型转换为对应的 String 或者 Number,实质就是调用 valueOf 和 toString 方法,也就是所谓的拆箱转换...valueOf 和 toString 的优先级: 进行对象转换 (alert(对象)),优先调用 toString 方法,如没有重写 toString调用 valueOf 方法,如果两方法都不没有重写...进行强字符串类型将优先调用 toString 方法,强转为数字优先调用 valueOf。 在有运算操作符的情况下,valueOf 的优先级高于 toString

54530

编写高质量的 JavaScript 代码(一)

二、当心强制转换 JavaScript中,运算符+既重载了数字相加,又重载了字符串连接操作,这取决于其参数的类型,简单总结如下: (1)如果两个操作数都是数值,执行常规加法运算 (2)如果有一个操作数是字符串...,则将另一个操作数转换成字符串,再进行字符串的拼接 (3)如果有一个操作数是对象、数值或布尔值,如果 toString 方法存在并且返回原始类型,返回 toString 的结果。...如果是undefined、null、NaN会调用String()函数取得字符串值’undefined’、’null’、’NaN’,再按照情形(2)进行运算 算数运算符-、*、/、和%计算之前都会尝试将其参数转换为数字...,简单总结如下: (1)如果两个操作数都是数值,执行常规运算 (2)如果有一个数是NaN,则结果是NaN (3)如果有一个操作数字符串、布尔值、null或undefined,则先调用Number()方法将其转换为数值...因此,valueOf()和toString()方法应该被同时重写,并返回相同的数字字符串或数值表示,才不至于强制转换得到意想不到的结果。

3.1K00

JavaScript中的类型转换、判断类型相关知识

、BigInt引用数据类型:Object【Object是个大类,function函数、array数组、date日期...等都归属于Object】不同的类型之间运算需要先对数据的类型进行转换,这里就包括类型转换和强制类型转换类型转换通常在一些数学运算中...,比如:+ - * / > < == 这些运算会发生转换,除了 + 其他都会转换成数值型。...// 1console.log(+true) // 1console.log(+false) // 0console.log(+null) // 0console.log(+"1") // 1当作为对象的键名会被转换成字符串强制类型转换...parseInt()parseInt函数将其第一个参数转换为一个字符串字符串进行解析,然后返回一个整数或 NaNconsole.log(parseInt('')) // NaNconsole.log...,它将参数强制换为数值原始值。

35250
领券