# 数据类型-类型转换

# 转换为数字

# Number()

使用Number函数,可以将任意类型的值转化成数值。

原始类型值 Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN

对象 简单的规则是,Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组。

console.log(Number("123")); // 123
console.log(Number("123b")); // NaN
console.log(Number("123n")); // NaN
console.log(Number({})); // NaN
console.log(Number([])); // 0
console.log(Number([1])); // 1 ???
console.log(Number([1, 2])); // NaN
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN ???

# parseInt()

方法用于将字符串转为整数。如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。

parseInt("8a"); // 8
parseInt("12"); // 12
parseInt("12.34"); // 12
parseInt("15e2"); // 15
parseInt("15px"); // 15
parseInt("abc"); // NaN
parseInt(".3"); // NaN
parseInt(""); // NaN
parseInt("+"); // NaN
parseInt("+1"); // 1

parseInt 方法还可以接受第二个参数(2 到 36 之间),表示被解析的值的进制,返回该值对应的十进制数 前面说过,如果 parseInt 的第一个参数不是字符串,会被先转为字符串。这会导致一些令人意外的结果。

# parseFloat()

parseFloat 方法用于将一个字符串转为浮点数。

如果字符串符合科学计数法,则会进行相应的转换。
如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN
尤其值得注意,parseFloat会将空字符串转为NaN

# num - str

console.log("1" - "1"); // 0
console.log("1" - 1); // 0
console.log(1 - "1"); // 0
console.log(1 - 1); // 0

# 转换为字符串

# String()

String函数可以将任意类型的值转化成字符串

undefined:转为字符串"undefined"null:转为字符串"null"布尔值true转为字符串"true"false转为字符串"false"

对象 返回一个类型字符串 数组 返回该数组的字符串形式。

String({ a: 1 }); // "[object Object]"
String([1, 2, 3]); // "1,2,3"

# Number().tostring()

此方法能把 null 和 undefined 转换为字符串

console.log(Number(123).toString()); // '123'
console.log(Number(null).toString()); // '0'
console.log(Number(undefined).toString()); // 'NaN'

# num + str

console.log("1" + 1); // 11
console.log(1 + "1"); // 11

# 转换为布尔型

# Boolean()

代表空、否定的值会被转化为 false。如false, '', 0,-0, 0n, NaN, null, undefined。其他的值均为 true

console.log(Boolean(false));
console.log(Boolean(""));
console.log(Boolean(0));
console.log(Boolean(-0));
console.log(Boolean(0n));
console.log(Boolean(NaN));
console.log(Boolean(null));
console.log(Boolean(undefined));

# isNaN()

isNaN 方法 可以用来判断一个值是否为 NaN。

console.log(NaN === NaN); // false
console.log(isNaN(NaN)); // true

# isFinite()

isFinite 方法 返回一个布尔值,表示某个值是否为正常的数值。

# Array.isArray()

Array.isArray 方法 可以用来判断一个值是否为 Array

let a = document.getElementsByTagName("a"); // HTMLCollection
console.log(Array.isArray(a)); // false

# Falsy

falsy 值(虚值)是在 Boolean 上下文中认定为 false 的值。

JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换 (Type Conversion ) 将值转换为布尔值,例如条件语句和循环语句。

在 JavaScript 中只有 8 个 falsy 值。它们分别是

  • false
  • '', ""
  • 0
  • -0
  • 0n
  • NaN
  • null
  • undefined