文章目录
数据类型分类
基本(值)类型
- String:任意字符串
- Number:任意的数字
- booLean: true/false
- undefined: undefined
- null: nuLL
对象(引用)类型
- object:任意对象
- Function:一种特别的对象(存储的是代码,可以执行)
- Array :一种特别的对象(数值下标,内部数据是有序的)
var obj={
name:'Tom',
age:12
}
function text(){
var a =3;
}
var arr = [1,2,'abc']
数据类型的判断
基本数据类型的类型判断
typedef
typedef:返回的是数据类型的字符串表达
经常使用 typedef
和 ===
结合起来判断数据类型。
eg:
console.log(a,typeof(a));
输出:
undefined 'undefined'
所以使用typedef判断一个数据类型是不是undefined,应该使用如下语句
console.log(a,typeof(a)==='undefined');
typedef可以判断:undefined、数值、字符串、布尔值、function,不能判断null、array。
typedef null 和 typedef array 返回值是 object
判断的时候记得加上'数据类型的小写'
var a;
//undefined,首字母要小写
console.log(typeof a === 'undefined')
a =4
console.log(typeof a =='number')
a='baidu'
console.log(typeof a =='string')
a = true
console.log(typeof a === 'boolean')
a = null
console.log(typeof a)
a = [1,2,3,4,5]
console.log(typeof a)
=== / ==(全等于/等于)
可以判断: undefined、null
var a;
console.log(a===undefined)
a = null;
console.log(a== null)
对象类型的类型判断
instanceof
判断对象的具体类型。
instanceof翻译为实例,A instanceof B
表示的是A是不是B的实例,所以说B是一个构造函数,A是一个实例。
eg:
var b1 = {
b2:[1,'abc',console.log],
b3:function(){
console.log('b3')
}
}
console.log(b1 instanceof Object, b1 instanceof Array)
console.log(b1.b2 instanceof Array,b1.b2 instanceof Object)
console.log(b1.b3 instanceof Function,b1.b3 instanceof Object)
typedef
当然可以使用typedef判断是不是函数,eg:
var b1 = {
b2:[1,'abc',console.log],
b3:function(){
console.log('b3')
}
}
console.log(typeof b1.b3 === 'function')
补充:函数的嵌套
var b1 = {
b2:[1,'abc',console.log],
b3:function(){
console.log('b3')
return function(){
console.log("_yang")
}
}
}
console.log(b1.b3()())
输出:
小问题
1.undefined与null的区别
- undefined代表定义未赋值
- null代表定义了
并赋值为null
eg:
var a
console.log(typeof a)
a = null
console.log(typeof a)
2. 什么时候赋值为null
// 初始赋值为null.麦明将要赋值为对象
var b =null
//确定对象进行赋值
b = ['baidu',12]
// b指向的对象成为垃圾对象(为了被垃圾回收器回收)
b =null
3. 严格区别变量类型与数据类型?
- 数据的类型——数据的实际存储形式
基本类型
对象类型 - 变量的类型(
变量内存值
的类型)
基本类型:保存就是基本类型的数据
引用类型:保存的是地址值
eg:
var c={};
console.log(typeof c)
c是一个变量,里面存储的是对象的地址
即c对应的变量类型是一个引用类型变量
,但是c指向的数据类型是对象类型