js数据类型转换

121 阅读2分钟
let result = 100 + true + 21.2 + null + undefined + "Tencent" + [] + 9 + false
console.log(result) // NaNTencent9fal

js中的数据类型

  1. 基本数据类型   number  string  boolean  null  undefined  symbol  bigint 
  2. 引用数据类型   object  function

把其他数据类型转换为number类型

1. 特定需要转换成number的

+ Number([val])
+ parseInt/parseFlaot([val])

2. 隐式转换(浏览器内部默认要先转为Number再进行计算)

+ isNaN([val])
+ 数学运算(特殊情况,+在出现在字符串的情况下不是数学运算,是字符串拼接)
+ 在==比较的时候,有些值需要转换为数字再进行比较

把其他的数据类型转换为字符串

1.能使用的办法

+ toString()
+ String()

2. 隐式转换(一般都是调用其toString)

+ 加号运算的时候,若果一边出现字符串,则是字符串拼接
+ 把对象转换为数字,需要先toString()转换为字符串,再转换为数字
+ 基于alert/confirm/prompt/document.write这些方式输出内容时,都是把内容先转换成字符串,然后再输出的

在==比较的过程中,数据类型转换的规则

【数据类型一样的几个特殊点】

1. {} == {}结果为false,对相比较的是堆内存的地址

2. [] == [] 结果为false

3. NaN == NaN 结果为false

【数据类型不一样的转换规则】

1. null == undefined 为true,但是换成===结果就是false(因为类型不一致),剩下的null/undefined和其他任何数据类型的值都是不想等的

2. 字符串==对象,要把对象转换成字符串

3. 剩下的如果==两边的数据类型不一致,都是需要转换为数字再进行比较

把其他数据类型转换成布尔

1. 基于以下几种方式可以将其它类型转换为布尔

+ !转换为布尔值后取反
+ !! 转换为布尔类型
+ Boolean([val])

2. 隐式转换

+ 在循环或条件判断中,条件处理的结果就是布尔类型的值

3. 规则

+ 0nullNaNundefined,空字符串转换为布尔值是false,其余的都是true

parseInt用法

+  parseInt([value])把value转换为数字(内核机制,需要把value先变成字符串,然后从字符串左侧第一个字符查找,把找到的有效数字字符转换为数字,直到遇到一个非有效数字的字符为止)

+  parseInt([value],[n])把value看作是[n]进制的数据,最后转换成十进制

+  [n]不写,默认是10,特殊情况字符串是以0x开头的默认是16进制

+  [n]范围是2-36之间,不在这个之间的除了0和10是一样的,其他的结果都是NaN