js中的变量是没有数据类型 但是变量的值有数据类型
数据类型
基本数据类型:number、string、boolean、null、undefined
引用数据类型:array、function、object 等等
typeof检测是数据类型有:number、string、boolean、undefined、object、function
隐式类型转换(自动转换)
1.string + numbre 字符串和数字 = 字符串(只有加法才可以)
var a = 100,
b= '100';
console.log(a + b); // '100100'
console.log(a - b); // 0
console.log(a * b); // 10000
console.log(a / b); // 1
console.log(a % b); // 0
- string + boolean 字符串和布尔 = 字符串
var a = '100',
b = true,
c = false;
console.log(a + b); // '100true'
console.log(a + c); // '100false'
- string + unll , string + undefined 空和未定义与字符串都 = 字符串
var a = '100',
b = null,
c;
console.log(a + b); // '100null'
console.log(a + c); // '100undefined'
总结:任何一个种数据类型,在于string做“+”运算时,都会将其转换为string,再做拼接
4. number + boolean 数字+布尔 = 数字
var a = 100,
b= true;
c = false;
console.log(a + b); // 101
console.log(a - b); // 99
console.log(a * b); // 100
console.log(a / b); // 100
console.log(a % b); // 0
console.log(a + c); // 100
console.log(a - c); // 100
console.log(a * c); // 0
console.log(a / c); // Infinity
console.log(a % c); // NaN
5.number + (unll || undefined)
var a = 100,
b = null,
c;
console.log(a + b); // 100
console.log(a + c); // NaN
- boolean + unll 、 boolean + undefined = NaN
var a = true,
b= null,
c;
console.log(a + b); // 1
console.log(a + c); // NaN
console.log(null == null); // true
console.log(undefined == null); // true
console.log(undefined == undefined); // true
看奇葩的NaN
console.log(NaN == 0); //false
console.log(NaN == 1); //false
console.log(NaN == true); //false
console.log(NaN == false); //false
console.log(NaN == null); //false
console.log(NaN == undefined); //false
console.log(NaN == NaN); //false