1、检查变量是否存在
var somevar="";
if(somevar){ //这种情况下,返回false
}
if(typeof somevar!=="undefined"){ //这种情况下返回true
//测试变量是否已经被初始化
}
2、逻辑运算符的优先级
()>!>&&>|| (尽量使用括号来设定优先级,这样代码才有更好的可读性)
3、惰性求值
var b=5;
true||(b=6); //true
true||"something"; //true
var c=true&&(b=6) //c=6
true&&"something" //"something"
true&&something&&true // true
如果javascript引擎在一个逻辑表达式中遇到了一个非布尔值的操作数,那么该操作数的值就会成为该表达式所返回的结果
4、js中的6个falsy值
空字符串""。
null。
undefined。
数字0.
数字NaN。
布尔值false;
5、js中能处理的数字范围
最大值: 1.79e+308 //将1.79的小数点往右移动308位
最小值: 5e-324 //将5的小数点位往左移动324位
6、使用Object.prototype.toString.call()来判断数据类型
var toString=Object.prototype.toString;
console.log(toString.call([123]));//[object Array]
console.log(toString.call('123'));//[object String]
console.log(toString.call({a: '123'}));//[object Object]
console.log(toString.call(function(){alert("这是个函数")}));//[objectFunction]
console.log(toString.call(/123/));//[object RegExp]
console.log(toString.call(123));//[object Number]
console.log(toString.call(undefined));//[object Undefined]
console.log(toString.call(null));//[object Null]
7、charCodeAt()
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。
如果charCodeAt()返回的数字大于255,则表示当前字符是汉字 8、apply()Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
apply可以将一个数组默认的转换为一个参数列表(将[1,2,3]转换为 1,2,3)
示例:将二维数组转换为一维数组
var ary=[[1,2,3],4,5,[6,7,8]]; var v=Array.prototype.concat.apply([],ary); console.log(v);//[1,2,3,4,5,6,7,8]