一、基本数据类型
js定义了6种基本数据类型
- null: 空。表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象,转为数字时为0,把一个对象的属性赋值为null,表示删除该属性
1.作为函数的参数,表示该函数的参数不是对象。 2.作为对象原型链的终点。
- undefined 表示未定义, 声明变量却没有赋值时会显示该值,当声明的变量还未被初始化时,变量的默认值为undefined,转为数值时为NaN
1.变量被声明了,但没有赋值时 就等于undefined 2.调用函数时,应该提供的参数没有提供,该参数等于undefined 3.对象没有赋值的属性,该属性的值为undefined 4.函数没有返回值时,默认返回undefined
- number: 数值
- string: 字符串
- boolean: 布尔值
- object:对象
null属于object数据类型的一种特殊形式
function是object数据类型的一种特殊对象
二、强、弱类型转换
隐式类型转换
1.“+”运算符
当运算符“+”两边一个是数字类型,一个是字符串类型时,js引擎规定进行字符串连接运算而非算术加运算。
可将通过此方法将number转换成string
2.“-”运算符
当运算符“-”,js引擎规定进行算术减运算。
可通过此方法将string类型转化为number
3.if/while会把参数隐式的转换成boolean类型
4.for in 定义对象字面量时 会出现 从标示符到字符串的隐式转换,遍历数组时也会把数组的索引转换为字符串
5.alert
String.prototype.fn = function(){return this}; var a = 'hello'; alert(typeof a.fn()); //-->object alert(a.fn()); //-->hello // 该方法返回this,this可以理解成当前类的实例对象,既然是对象那么typeof a.fn()自然返回是object。
Number.prototype.fn = function(){return this}; var a = 10; alert(typeof a.fn());//-->object alert(a.fn()); //-->10
强制类型转换
1、转换函数
parseInt(),有基模式,二进制、八进制、十六进制。。
parseFloat(),字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。
2、强制类型转换
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
3、利用弱类型转换
参考一