一、undefined/null/NaN
1、undefined
1)当使用var声明变量但未初始化就是undefined
var message;
alert(message); //undefined
alert(typeof message); //undefined
2)尚未定义的变量不是undefined
alert(age); //报错
2、null
表示一个空指针对象
alert(typeof null); //'object'
3、NaN
特殊的number,表示一个本来要返回数值的cao’zuo操作未返回数值的情况(这样就不会抛错误)
1)任何数值除以非数值返回NaN
2)上一条中的例外
正数/0 //Infinity
负数/0 //Infinity
二、基本类型
Undefined、Null、Boolen、Number、String 五种
基本类型按值访问,可操作保存在变量中的实际的值
三、引用类型
Object、Array、Date、RegExp、Funtion 五种
1. 引用类型介绍
- 引用类型中的值是保存在内存中的对象
- js不允许直接访问内存中的位置,也就是说不能访问操作对象的内存空间,因此,操作对象时,实际是操作对象的引用而不是实际对象。
- 例外:为对象添加属性时操作的是对象
- 复制变量值:复制的值是一个指针,其中一个改变,都会变。
2. Array类型
1)栈方法:后进先出
push()添加到数组末尾,并返回长度
pop() 从末尾移除一项,并返回移除的项
2)队列方法:先进先出
shift()移除第一项,并返回该项
unshift()从前面添加任意项,并返回长度
3)重排序
var values = [0,1,5,10,15];
values.sort(compare);
alert(values); //0,1,5,10,15
注:如果直接调用values.sort();返回0,1,10,15,5因为sort()方法按照两两string比较,所以需要自定义compare方法:
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
4)操作方法
4.1 concat()
创建一个副本–>将参数添加到末尾–>++形成一个新数组++
var colors = ['red','green','blue'];
var colors2= colors.concat('yellow');
alert(colors); //red,green,blue
alert(colors2); //red,green,bule,yellow
4.2 slice()
slice(attr1);返回位置从attr1到末尾的++新数组++
slice(attr1,attr2);返回位置从attr1到attr2的++新数组++
var arrlist = [1,2,3,4,5,6];
slice(2); //[3,4,5,6]
slice(2,4); //[3,4]
- - 如果参数为负数,则用length加上参数
4.3 splice()
(1)删除
splice(0,2); 要删除的开始位置和要删除的项数
(2)插入
splice(2,0,"red","green");
- 起始位置
- 要删的项数
- 要插入的项,可继续添加多项
(3)替换
splice(2,1,"red","green");
- 起始位置
- 要删的项数
- 要插入的项,可继续添加多项
5)迭代方法
every(); 若每一项都为true,则为true,否则为false
some(); 若有一项为true,即为true
filter(); 遍历数组,返回满足条件的数组
map(); 遍历,返回调用函数的结果组成的数组
forEach(); 遍历数组
6)归并方法
reduce(); 从左向右算
reduceRight(); 从右向左算
var values = [1,2,3,4,5];
var sum = values.reduce(function(pre,cur,index,array){
return pre+cur;
}
);
alert(sum); //15