JavaScript数据类型隐式转换
引言——面试题
在讲JavaScript的数据类型隐式转换前,我们先看道面试题:
console.log(new String('abc') == true)
console.log({
} == true)
console.log([] == ![])
结果是什么呢?
先把结果写下来,放在一边,然后继续看
一、js中的数据类型隐式转换的三种情况
- 转换为boolean类型
- 转换为number类型
- 转换为string类型
二、js中数据类型转换的规则
1、转为Boolean类型
-
转换条件:
数据在 逻辑判断 和 逻辑运算 之中会隐式转换为boolean类型
-
转换规则表
数据类型 转换为true的值 转换为false的值 String 任何非空字符串 空字符串(""或’') Number 任何非零数字 0和NaN Object 任何对象 null Undefined 不适用 undefined -
tips
-
注意字面量形式、包装器方式,new 方式的区别,new操作符创建的隐式转换为Boolean都是true
var a = 'Davie' //申明的是一个string类型,它是一个基本类型 var a = String('Davie') // String()是一个包装类,用于将参数转换成string类型 var a = new String('Davie') //采用new方式时创建了一个object类型
使用typeof验证上面的结论
var a='Davie' console.log(typeof a) //string console.log(typeof String(a)) //string console.log(typeof(new String(a))) //object
-
连续使用两个非操作符(!!)可以将一个数强制转换为boolean类型,这在开发之中比较实用。
-