1、使用===
它比较不会类型转换,速度要比==快
'1'===1 false
'1'==1 true
2、typeof 一元操作符,用于以字符串的形式返回变量的数据类型
typeof null Array Date 都返回object
这样在判断变量变形时会有问题,可用:
Object.prototype.toString.call(XX)来判断
3、instanceof 判断对象是否为指定类的实例
[] instanceof Array
4、将一个数组元素追加到另一个数组。
Array.prototype.push.apply(a,b) //b 的元素会添加到a内。
a.push(b) //这是把b数组添加到了a数组中而不是数组元素。
5、apply call
都需传入调用的对象,
只是参数传递不同:
call 以Xx,XX,XX...
apply 参数以数组传递,相当于方法在使用时a,b,c 的传递是[a,b,c]。
4的追加数组元素正是用的这个机制。
6、将arguments转换成数组
arguments不是真正的数组,虽然可用下标访问.
Array.prototype.slice.call(arguments);
7、Object.prototype.toString.call(obj,arr) 返回 [object Array]
8、返回数组中最大值最小值
Math.max.apply(null,[])
Math.min.apply(null,[]);
9、splice 删除数组元素
[].splice(下标位置,删除长度) //会从指定的下标开始删除
10、通过length来截取数组
[].lenght=2;//会删除2位以后的所有元素
11、保留小数位
XX.toFixed(2)
12、for in 遍历对象
for(var i in obj){
if(obj.hasOwnProperty(i)){
//
}
}
13、typeof bug坑
typeof 判断对象、数组、null时都返回 object
14、var 声明变量的坑
var a=b=1;
这时的b是在全局上定义 的
15、Number.isInteger
判断参数是否是整数
16、Number.toPrecision()
方法可在对象的值超出指定位数时将其转换为指数计数法。
在对小的数字时会返回其字符串形式
17、js时间用法
有时需要设置固定的时间,
var d=new Date(2016,1,9,8,50,30)//设置某个时间
var d=new Date(Date.parse('2016/01/09 10:06:09'));
18、在函数内对参数名赋值:
函数内对传递过来参数赋值obj={}。
这时是在函数内创建一个obj的变量名,而不是对参数obj的修改。
外部obj还是原值,内obj有新的值。