Demos: https://github.com/jiangheyan/JavaScriptBase
运算符
一、模% i % num ---> 0、1、2……num-1(i比num小取i值,i比num大取减值;比小取小,比大取减)
0 % 3 = 0;
1 % 3 = 1;
2 % 3 = 2;
3 % 3 = 0;
4 % 3 = 1;
5 % 3 = 2;
1 var j = 0;
2 for(var i = 0; i < arr.length; i++){
3 aLi = document.getElementsByTagName('li');
4 aLi[i].style.background = arr[i%arr.length]; //[i%arr.length]会遍历0~arr.length,例如:0、1、2、0、1、2、0、1、2……
5
6 //以上写法等同于:
7 if(j >= arr.lenth){
8 j = 0;
9 }
10 arr[i].style.background = arr[j];
11 j++;
12 }
二、运算符
1、== 等于,只判断值是否相等,不管类型:'3' == 3 //true
2、!=
3、=== 全等,先判断类型,如果类型不相等,直接报错,不进行下一步值的判断;如果类型相等再判断值是否相等 '3' === 3 //false
4、!==
5、&& var a = 12 < 31 && 20 // a = 20
6、|| var a = data || 12 //如果data不等于0(为真),则a = data; 否则 a = 12; //假设两边都不靠谱,则false
7、! var a = !true // false var a = !200 // false --》 ! 具有数据类型转换的功能,转化为boolean true/false
反选:
for(var i = 0; i < aInp.length; i++{
if(aInp.cheched){
aInp.checked = false;
}else{
aInp.checked = true;
}
// 简单写法:
aInp[i].checked = !aInp[i].checked;
}
8、三元运算 x ? y : z;
流程控制
一、判断
1、if
2、switch
switch(str){
case 'js':
alert('js');
break;
case 'html':
alert('html');
break;
default:
alert(str);}
3、只有一个 if + else 的时候,可以改利用三元运算符判断:12 < 45 ? alert(123) : alert(456); || dir = parseInt(getStyle( obj, attr )) < target ? dir : -dir;
4、只有一个 if 的时候,可以改利用“且”运算符(&&):callback && callback();
二、判断
1、for
for(var i = 0; i < 3; i++){
alert(i);
}
2、while
var i = 0;
while(i < 3){
alert(i);
i++;
}
3、continue 和 break
for(var i = 0; i < 10; i++){
if(i === 4){
//continue; 跳过本次循环,不往下执行,但是继续执行 i++ 之后的循环 //0 1 2 3 5 6 7 8 9
break; 跳出for循环,结束剩余for循环 //0 1 2 3
}
alert(i);
}
三、真假的问题 从类型出发(数字类型、字符串、布尔、函数、对象(elem、[]、{}、null))、undefined
1、真
1.1 非0的数字(包括负数等等)
1.2 非空字符串(包括空格等等)
1.3 true
1.4 函数
1.5 能找到的元素
1.6 所有数组(数组相当于仓库,都是存在的,包括空数组)
1.7 json(同数组,包括空json对象)
2、假
2.1 0
2.2 NaN 例如 123-'abc'
2.3 空字符串 ''
2.4 false
2.5 不能找到的元素
2.6 null
2.7 undefined