一、数据类型
基本数据类型:String、Number、Boolean、undefined、null、Symbol(ES6)
引用数据类型:Object、Array、Function、Date
基本数据类型存储在栈中,栈用于存储基本数据类型和执行代码
引用数据类型存储在堆中
栈 | 堆 | |
速度 | 快 | 慢 |
空间 | 小,稳定 | 大,动态、无限 |
存储顺序 | 有 | 无 按引用直接获取 |
二、undefined与null
undefined是一个变量最原始的状态值,非人为操作
null是人为地置空
undefined == null
判断是否为null:if(i === null)
三、typeof
typeof是一个运算符
console.log(typeof undefined); //undefined
console.log(typeof null); //object
console.log(typeof {a:"sd"}); //object
console.log(typeof 123); //number
console.log(typeof "123"); //string
console.log(typeof true); //boolean
console.log(typeof [1,2,3]); //object
function fn(){}
console.log(typeof fn); //function
四、其他数据类型转换为Boolean值
true | false | |
undefined | -- | undefined |
null | -- | null |
Number | 其它 | +0、-0、NaN |
String | length>0 | length=0 |
Object | 所有 | -- |
四、其它数据类型转换为Number
(1)使用Number函数
字符串:含有非数字为NaN,纯数字返回数字,"" 与 " "为0
布尔值:true 1,false 0
数组:[]为0,其余NaN
对象:NaN
null:0
undefined:NaN
判断变量a是否是NaN,isNaN(a);
console.log(Number("123")); //123
console.log(Number("")); //0
console.log(Number(" ")); //0
console.log(Number("a123")); //NaN
console.log(Number("123a123")); //NaN
console.log(Number(true)); //1
console.log(Number(false)); //0
console.log(Number({a:"1"})); //NaN
console.log(Number({a:true})); //NaN
console.log(Number({a:false})); //NaN
console.log(Number([1,2,3])); //NaN
console.log(Number([])); //0
function fn(){}; //
console.log(Number(fn)); //NaN
console.log(Number(null)); //0
console.log(Number(undefined)); //NaN
(2)字符串转Number,parseInt与parseFloat
非数字后面的会被舍弃
第一个字符是非数字为NaN
五、其它数据类型转换为String类型
调用内置函数的toString方法