一. 数据类型
js中的数据类型:
5种基础类型:Undefined,Null,Boolean,Number,String
1种复合类型:Object(对象包括数组,函数等)
二. 常见的判断js数据类型的方法有如下几种
1.最常见的判断方法:typeof
其中typeof返回的类型都是字符串形式,需注意!!!!!
alert(typeof 123) ------------------>"number"
2.已知对象类型: instanceof
注意:instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。
new Date() instanceof Date -------->true
3.对象原型链判断方法: prototype 通用但很繁琐
console.log(Object.prototype.toString.call([1, 2, 3])) -------->[object Array]
4.根据对象的构造器constructor进行判断
5.jQuery方法: jquery.type()
据说是无敌万能的方法.如果对象是null跟undefined,直接返回"null"和"undefined",
注意:在使用时,一定要引入jquery文件,不然会报错,jQuery is not defined
-
console.log(jQuery.type(function(){}) === "function") -------->true
-
console.log(jQuery.type(new Date()) === "date")-------->true
6.严格运算符: ===
通常===出现在我们的条件判断中,比如判断一个变量是否为空,变量是否为数据等,示例如下
var a=null; typeOf a //object. a===null. //true
//判断一个非数组变量是否为空
if(typeof a != 'undefined' && a ){}
//判断一个数组变量是否为空
if (typeof a != “undefined” && a && a.length > 0) {}
三. 数据类型转换
显示转换:
使用String(), Number(), Boolean(), Object()分别对数据进行字符串,数字,布尔值,对象等的转换,也称为强制转换
1)toString()方法:注意,不可以转null和underfined,String()方法:都能转
|
返回的结果为 false,string
看看null 和 undefined能不能转换为字符串javascript
1 2 |
|
结果程序报错
.toString() 括号中的可以写一个数字,代表进制,对应进制字符串
二进制:.toString(2);
八进制:.toString(8);
String()可以将null和undefined转换为字符串,但是没法转进制字符串
例如将null转换为字符串
1 2 |
|
返回的结果为 null,string
将undefined转换为字符串
1 2 |
|
返回的结果为 undefined,string
2)Number可以把任何类型的数据转换为数值,parseInt和parseFloat只能把字符串或数值转换为数值。
Number('4a')// NaN. parseInt('aa4')// NaN. parseInt('4a')//4
如果要转换的字符串中有一个不是数值的字符,返回NaN
Number(true)。//1
3)Boolean():0 ''(空字符串) null undefined NaN 会转换成false 其它都会转换成true
隐式转换:
在js中,很多情况下部分运算符会对操作数进行隐式的类型转换 ,如+和==
1 +
'1'
//‘11'
2 - ‘1’
// 1
+'32'
//32
!0
//true
var
a = 2; a++
//2
var
a = 2; ++a
//3
在js中,- * /会把操作数转换成数字,但是请注意,+比较特殊,因为在js中,+号不仅是数字运算符,也是字符串连接符,所以在出现加号的时候就要根据具体情况去看结果了,如果+号的两端都是数字,那么结果自然也是数字,同理两端都是字符串,那么结果也同样是字符串,如一端是数字,一端是字符串,那么就会把数字先转换成字符串,在进行连接,所以结果是字符串:
比较运算符==也会对操作数进行隐式转换,而===则不会进行类型转换
0 ==
false//true 1 === ‘1’
//false
但是:
null==undefined//true
更多显示隐式转换 参照