数据类型的相互转化
强制转化
1. 其他类型转数字 Number()
-
字符串转成数字
-
纯数字字符串 , 成功的转成对应的数字
-
非数字字符串 -> NaN
-
空字符串和空格字符串 -> 0
-
布尔值转成数字:true -> 1
false -> 0
-
其他
null -> 0
undefined -> NaN
其他类型转字符串 String()
全部相当于加了引号
其他类型转成布尔值 Boolean()
null 和 undefined 区别
隐式转化 ----- 程序自己完成的转化
数字的隐式转化
-
算术运算 + - * / % 隐式转化为数字
注意:+在遇到字符串的时候,会自动转字符串进行拼接
var a = '2' - '1'
console.log(a)
var b = 'hi' - 1
console.log(b)
var c = true + 1
console.log(c)
var d = null + 4
console.log(d)
var f = true + '1'
-
比较运算 隐式转化为数字
`注意:两个字符串进行比较的时候,不转数字,而是一位一位的比较ASCII值(短路)
console.log(true == 1) ;
console.log('20' > '111111111111') ;
console.log('a' < 'b') ;
-
字符串的隐式转化
+ 且至少有一个字符串
类型不一样 变成一样的 转数字进行比较
console.log('a' < 2) ;
console.log(null < 2) ;
隐式转化与赋值的问题
var a = 1
var b = '1'
var c = a + b
console.log(typeof a)
// 变量只会通过赋值发生改变!!!!!!