写给前端小白的入门技术白皮书05-数据类型之间的转换

94 阅读2分钟

数据类型

js中的数据类型

  • 基本类型:String,Number, Boolean, undefined, null,Symbol(es6新增),BigInt(大整数 es6新增)
  • 引用类型:Object (包括Funtion,Array,Date, Math等)

如何判断数据类型

typeof 与 instanceof

显示转换

  • 转字符串
    • toString(). null和underfined不可以使用toString();所以使用此方式需要对字符串做非空判断
    • String() 可以转null和underfined
let a = 123;
a.toString(); // '123'
String(a); // '123' 
true.toString(); // 'true'
String(null); // 'null'
  • 转number:
    • parseInt(): 转整型 只能把字符串或数值转换为数值。
    • parseFloat(): 转浮点 只能把字符串或数值转换为数值。
    • Number(): 可以把任何类型的数据转换为数值
Number('4a')// NaN
parseInt('aa4')// NaN
parseInt('4a') // 4  
Number(true); // 1

隐式转换

// 两边都是数字是就是正常的加法运算
1 + 1 = 2;

// 两边都是字符串时,就是字符串的拼接
'aa'+ 'bb' // 'aabb'

// 两边是不同数据类型时
1 + '2a' // '12a'  // 一边数字一边字符串时 会转成字符串拼接
true + 1 // 2   布尔加字符串会将布尔true转成1 false转成0
true + 'aa' // 'trueaa'
  • == 与 ===

    • == 如果等号两边的数据类型不相同,会先进行隐式转换后,再进行比较
// string == number  string将会转化成number去作比较
"42" == 42 // true 42 == 42

// 其他类型 == Boolean  boolean值将首先转化成number类型, 0或者1. 然后再进行比较
"42" == true // false "42" == 1 ---> 42 == 1
null == undefined // true 除了这一对外, 其他的值和他们比都返回false

// 引用类型 == 基本类型  首先将引用类型转换成基本类型
[] == ![];      // true  [] == false --> [] == 0 --> "" == 0 --> 0 == 0
2 == [2];       // true  2 == "2" --> 2 == 2
"" == [null];   // true  "" == ""  (ps: String([null]) === "";  String(null) === "null")
"0" == false;  // true "0" == 0 --> 0 == 0
false == 0;   // true 0 == 0
false == "";  // true 0 == "" --> 0 == 0
false == [];  // true 0 == [] --> 0 == "" --> 0 == 0
"" == 0;      // true 0 == 0
"" == [];     // true "" == ""
0 == [];     // true 0 == "" --> 0 == 0

在js中只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false

  • === 不仅比较值,还要比较数据类型
"42" === 42 // false