真正毕业也一年多了,好多知识点都没有当初记得那么牢固,每次用到的知识,也总是不够十分确定,于是乎,买书,看书,总结。
这篇文章只是总结下,之前掌握不扎实的东西,先拿令我印象最深的花旗外资面试,问我的关于typeof的知识点,不妨做个总结。
该文章涉及的知识点如下:
javascript数据类型
- 5种
基本数据类型
,分别为Undefined
、Null
、Number
、String
、Boolean
。
其中: 只声明未赋值
或 未定义
的为undefined。
Null 代表一个空的对象
,如果提前声明一个变量用于后期存放对象
,最好初始化为null
。
另外 null == undefined
返回为true。
同时 "" == 0
返回也为true。
Number中特殊的NaN
,需注意一切与NaN相关的操作都为NaN
,NaN与任何数据都不相等,包含其本身
。
String类型注意,最外层
要么使用单引号
,要么使用双引号
,不要开头单引号、结尾双引号,例如var str = 'zz123";
。
注意多个单双引号嵌套
。
转换为String,可以使用 toString()
或 String()
。
null
和undefined
不支持toString(),可以使用String(),返回的是"null"和"undefined"。
简单粗暴的直接使用加号
,如变量名 + ""
Boolean布尔类型,只返回true或false,注意与"true"或"false"区别。
-
基本数据类型特点:
栈内存
,复制的时候,相互独立
,互不影响
,改变前一个后一个不会受到影响。 -
1种复杂的数据类型,
引用类型
,即object。
堆内存
,指针
,引用的是内存地址
,内存地址的值发生改变,其他引用的地方也会改变。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var name = "zmh", age = 24, isBoy = true, mobile, myInfos = null;
var myFruits = ['苹果', '橙子', '火龙果'];
var myfun = function(){};
var pattCardId = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
var newDate = new Date();
function checkDataTypes(){
var len = arguments.length;
for(var i = 0; i < len; i++){
var str = typeof arguments[i];
switch(str) {
case 'string':
console.log(arguments[i] + "-->是字符串类型!");
break;
case 'number':
console.log(arguments[i] + "-->是数字类型!");
break;
case 'boolean':
console.log(arguments[i] + "-->是布尔类型!");
break;
case 'undefined':
console.log(arguments[i] + "-->是未定义类型!");
break;
case 'function':
console.log(arguments[i] + "-->是函数对象类型!");
break;
case 'object':
if(arguments[i] == null){
console.log(arguments[i] + "-->是空对象类型!");
break;
}else{
if(arguments[i] instanceof Array){
console.log(JSON.stringify(arguments[i]) + "-->是数组对象类型!");
break;
}else if(arguments[i] instanceof RegExp){
console.log(arguments[i] + "-->是正则对象类型!");
break;
}else if(arguments[i] instanceof Date){
console.log(arguments[i] + "-->是日期对象类型!");
break;
}else{
console.log(arguments[i] + "-->是其他非空对象类型!");
break;
}
};
default:
console.log(arguments[i] + "-->是未知类型!");
}
}
}
checkDataTypes(name, age, isBoy, mobile, myInfos, myFruits, myfun, pattCardId, newDate);
</script>
</body>
</html>
判断js数据类型.png
-
逗号操作符
,可用于批量声明变量。 -
函数中的
arguments
对象。 -
switch使用的是
全等比较
,不存在类型转换。 -
case可使用
表达式
。 -
每个case,跟一个
break
,阻止继续向下执行无用逻辑。 -
typeof是
操作符
,不是一个函数,但typeof XX
与typeof(XX)
等效,不会报错。 -
typeof 对
null
和object
,返回均为object
,所以判断object要排除null
。 -
typeof 对函数,返回function。
-
但是
null 与undefined
是派生
关系,所以null == undefined
返回true
。要先排除undefined,然后排除null。 -
instanceof 用于判断
原型
,但是array、regExp、date也是Object,所以判断具体是Array、RegExp、Date之前不能先判断Object
。 -
如果是对象,可以直接使用
console.log()
, 看输出结果是[object,object]
还是[object,array]
等等,不建议用。 -
JSON.stringify()
可以把对象内容打印出来。 -
break
、continue
、return
区别。
网友评论