一.位运算
1.快速乘/除2:
1<<2//4
1<<10//1024
2<<3//16
16>>2//4
//注意越界问题:
2e9<<1//-294967296
//注意精度:
18>>2//4
1>>6//0
2.切换0和1:
i=1
i^=1//0
i=0
i^=1//1
3.判断奇偶性:
如果结果为1,原数为奇数;如果结果为0,原数为偶数:
7&1//1
8&1//0
4.将数字转换为布尔值:
0转化为false;其他数值均转换为true:
!!7//true
!!0//false
!!-1//true
!!0.71//true
5.取整:
整数向下取整;负数向上取整:
~~11.71//11
11.71>>0//11
11.71<<0//11
11.71|0//11
11.71>>>0//11
~~-11.71//-11
-11.71>>0//-11
-11.71<<0//-11
-11.71|0//-11
//注意:>>>不可用于负数取整
-11.71>>>0//4294967285
6.值交换:
a=7
b=1
a^=b//6
b^=a//7
a^=b//1
//注意:要交换的值必须是整数
7.判定符号是否相同:
如果结果为true,相同;否则,不同:
(12^31)>=0//true
(-12^31)>=0//false
(-12^-31)>=0//true
(1.2^-2.1)>=0//false
8.值是否相等:
如果结果为0,则相等;否则,不相等:
1171^1171//0
11^32//43
11.21^11.21//0
9.是否为2的整数次幂:
如果结果为0,说明是;否则,不是:
n=24
n&(n-1)//16
n=64
n&(n-1)//0
10.代替Math.round():
如果原数>=0,就使用<i>+0.5|0;否则,使用<i>-0.5|0
0+0.5|0//0
Math.round(25)//25
25+0.5|0//25
Math.round(-25)//-25
-25-0.5|0//-25
Math.round(25.5)//26
25.5+0.5|0//26
Math.round(-25.5)//-25
-25.5-0.5|0//-25
Math.round(25.49)//25
25.49+0.5|0//25
Math.round(25.51)//26
25.51+0.5|0//26
Math.round(-25.51)//-26
-25.51-0.5|0//-26
Math.round(-25.49)//-25
-25.49-0.5|0//-25
二.字符串
1.获取随机字符串:
Math.random().toString(16).substring(2,4)//"47"
Math.random().toString(16).substring(2,8)//"74a332"
Math.random().toString(16).substring(2,15)//"1ce311be8ec4f"
Math.random().toString(16).substring(6,15)//"5a0c9b637"
2.使用整数作为分隔条件:
"alpsjadisdl,sas".split(",")//["alpsjadisdl", "sas"]
"alpsjadisdl,sas".split(0)//["alpsjadisdl,sas"]
这样可以节约2B的内存空间
3.创建< a>标签:
使用"<text>".link("<url>"):
"google".link("www.google.com")//"<a href="www.google.com">google</a>"
4.重复字符:
使用Array(<n>).join(<c>):
Array(7).join(0)//"000000"
Array(5).join("d")//"dddd"
注意:重复的次数为<n>-1
三.其他
1.创建随机数:
new Date%100//31//2位随机数
new Date%1000//583//3位随机数
new Date%10000//9239//4位随机数
注意:不要在快速循环中使用,因为时间可能还没有变化
2.替代undefined:
void 0//undefined//性能比直接写undefined要高
''._//undefined
1.._//undefined
0[0]//undefined
3.替代Infinity:
1/0//Infinity
-1/0//-Infinity
4.清空数组:
arr=[0,1,2,3,4,5]
arr.length=0
arr//[]
5.浅拷贝数组:
arr=[0,1,2,3,4,5]
b=arr.slice(0)
b//[0, 1, 2, 3, 4, 5]
6.判断IE版本:
如果为true,则版本不超过IE8;否则,版本不小于IE9:
!+"1"//false
7.for循环条件的简写:
//原版:
for(i=0;i<arr.length;i++){...}
//简写版:
for(i=arr.length;i--;){...}
注意:i--后需要有分号