Javascript中的类型转换

Posted liquanjiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript中的类型转换相关的知识,希望对你有一定的参考价值。

第一部分:javascript中类型转换的常用场景

1.在使用运算符进行操作时,常用的运算符就是 + 运算符

使用+运算符做运算时,由于只有 字符串 和数字 才能够使用+运算符,那么使用时,会根据情况,将不同的数据类型,转换为字符串或者数字

当+运算符左边的数据类型是数字时, 1 + null === 1 // 这里将null转为了数字0 1 + undefined // NaN undefined无法转为数字 ,那么就会 NaN


1 + NaN   //  NaN 

注意的是 NaN === NaN 以及 NaN == NaN 都是false, 但是 typeof NaN === ‘number‘

1 + ‘a‘ === ‘1a‘ // 数字与字符串或者对象相加,默认转为字符串 

1 +  === ‘1[object Object] // 对象相加时,默认将对象toString()后相加

1 +  a : 1 === ‘1[object Object]‘ // 对象相加时,默认将对象toString()后相加

1 + [] === ‘1‘  // 数组相加时,默认将数组toString()后相加

1 + [1] === ‘11‘ // 数组相加时,默认将数组toString()后相加

1 + [1,1,1] === ‘11,1,1‘ // 数组相加时,默认将数组toString()后相加

1 + false === 1

1 + true === 2
1 + Object === ‘1function Object() [native code] ‘ 1 + Function === ‘1function Function() [native code] ‘ 1 + function() return 1 === ‘1function()return 1‘ 1 + function() return 1 === "1function() return 1 " 1 + Symbol = ‘1function Symbol() [native code] ‘ 1 + Set = ‘1function Set() [native code] ‘ const str = ‘str‘ str + 1 === ‘str1‘ // 字符串与数字相加 ,转为字符串 str + [] === ‘str‘ // 数组相加时,默认将数组toString()后相加 str + [1] === ‘str1‘ // 数组相加时,默认将数组toString()后相加 str + [1, 1, 1] === ‘str1, 1, 1‘ // 数组相加时,默认将数组toString()后相加 str + === ‘str[object Object]‘ // 对象相加时,默认将对象toString()后相加 str + a : 1 === ‘str[object Object]‘ // 对象相加时,默认将对象toString()后相加 str + NaN === ‘strNaN‘ // 字符串与NaN相加 str + null === ‘strnull‘ str + undefined === ‘strundefined‘

str + true === ‘strtrue‘

str + false === ‘strfalse‘
字符串与函数相加结果与数字类似

其他类型的数组之间使用 + 运算符时

null + null === 0 //

false + false === 0 // 

true + true === 2 //

true + false === 1

undefined + null // NaN

null + undefined // NaN

undefined + undefined // NaN

false + null === 0

true + null === 1

true + undefined // NaN

undefined + true // NaN

false + undefined // NaN

undefined + false // NaN

2. 使用 ==  和 === 运算符时

1 == true  // true 

0 == false // true 

0 == null // false

0 == undefined // false

0 == ‘‘ // true

‘‘ == false // true
 
null == false // false 

‘‘ == null // false

‘‘ == undefined // false

undefined == false // false

null == undefined // true

1 == ‘1‘, 1 == true, ‘1‘==true  // true

‘0‘ == false, false == 0, 0 == ‘0‘  // true

‘0‘ == true // false

NaN 不能 == 任何值,甚至 NaN != NaN

[] == [] // false 

 ==  // false 

对于引用类型数据来说 ,地址是不可能相同的,所以 [] == [] ,  ==  是false

Symbol(1) == Symbol(1) // false

Symbol类型的任何值都不会和其他值 相等,因为Symbol本身就是定义独一无二的值

3.补充说明,if的判断条件

if的判断条件是把小括号中的值转换成boolean形式的值

即对小括号中的值使用Boolean()方法转换

那么 
Boolean(1) === true

Boolean(0) === false

Boolean(null) === false

Boolean(undefined) === false

Boolean(NaN) === false 

Boolean(Symbol()) ===  true

Boolean(‘‘) === false

Boolean() === true

Boolean([]) === true

Boolean(function()) === true

Boolean(‘0‘) === true

// 最特殊的情况
Boolean(new Boolean(false)) === true

 

以上是关于Javascript中的类型转换的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的类型转换

JavaScript中的类型转换

javascript中的数据类型转换

javascript中的类型转换

javascript中的数据类型转换

JavaScript学习系列博客_5_JavaScript中的强制类型转换