JavaScript基础
进制
常用进制
-
二进制、八进制、十进制、十六进制
-
颜色一般使用RGBA模式
- 每个数值范围0~255,A表示透明度
- #FF0000,数值越大颜色越亮,反之则暗
运算符
位运算符
-
作用:代码不易被人看懂
-
& 位与运算
- 运算规则,数字转为二进制,高位不足用0补齐,逐为进行与运算
- 任何数(同次幂)与二的n次幂减一(7,15……)相与都是该数本身
- 高次幂只考虑剩余几位,例如:37&7=(32+5)&7=5&7
-
| 位或运算
- 任何数(同次幂)与二的n次幂减一(7,15……)相或都是该二的n次幂减一
- 高位运算 原理同位与运算
-
^ 位异或运算
- 每位不同为1,相同为0
- 一般用于加密解密
-
~ 位非运算
- 加1取负
- 例:~1=-2,~-5=4
- 用于判断元素有无
-
<< 左位移
- 1<<4=16
-
右位移
三目运算符
-
条件?返回值1:返回值2
- 判断条件是否成立,如果条件成立返回第一个值 否则返回:后面的第二个值
- 如果表达式的结果转换为布尔值为真时,返回问号后面的值,否则返回冒号后面的值
- 问号前面的内容会自动隐式转换为布尔值
-
三目运算符比赋值运算(+=)优先级高
-
当需要返回的是布尔值时,不要使用三目运算符
- 例:var a=3>2 ? true : falase,可直接用var a=3>2;
-
复杂条件处理尽量也不用三目运算符
运算符优先级
- . [] () 字段访问、数组下标、函数调用以及表达式分组
- ++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
-
- / % 乘法、除法、取模
-
-
-
- 加法、减法、字符串连接
-
-
- << >> >>> 移位
- < <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
- == != === !== 等于、不等于、严格相等、非严格相等
- & 按位与
- ^ 按位异或
- | 按位或
- && 逻辑与
- || 逻辑或
- ?: 条件
- = oP= 赋值、运算赋值
- , 多重求值
流程控制语句
条件语句
-
if
-
if(条件){ 执行语句 }
- 如果条件表达式运算后隐式转换为布尔值是true,进入该条件语句
- 条件不管什么表达式都会隐式转换为布尔值
- !非 在条件语句中大量用!配合完成不是这种非真进入
- 判断条件不限于ture和false
-
-
if……else
-
if(条件){ 执行语句1 }else{ 执行语句2 }
- 如果条件表达式运算后隐式转换为布尔值是true,进入执行语句1
- 如果条件表达式运算后隐式转换为布尔值是false,进入执行语句2
-
-
if……else if……
-
if(条件1){ 执行语句1 }else if(条件2){ 执行语句2 }else if(条件3){ 执行语句3 }else{ 执行语句、…… }
- 与 if(条件1){执行语句1 } if(条件2){执行语句2 } if(条件3){执行语句3} 不同之处: if……else if……仅执行其中一个条件结果 if逐个条件都会判断,根据判断结果执行对应的内容
-
-
switch……case
-
switch(表达式){ case 值1: 执行语句; break; case 值2: 执行语句; break; case 值3: 执行语句; break; case 值4: 执行语句; break; default: }
- 当表达式绝对等于(三个等号)值时,执行相应内容
- default:默认以上条件都不满足时执行,后可以不写break
- break 跳出当前条件,如果不写break,不判断值2是否相等,直接穿越(同时执行,直到break)
- case后面的值,可以是结果,也可以是表达式
- 通常用作写状态机
-
循环语句
-
while
-
while(循环条件){ 循环语句; }
- 使用while 广度遍历,深度遍历 深度遍历时,要求对象属性名相同。属性名不同时,用数组遍历名称。
-
关键字
-
break
- 跳出(结束循环)
- 如果没有引用,只能用于跳出一个循环
- abc(循环前增加ID): Break abc; 跳出锚点所在的循环(跳出到指定的ID位置)
-
continue
- 继续(结束本次循环)
- 遇到满足条件的跳到下一次循环继续向后,当前continue后面的语句不再执行
- 当整个循环中遇到阶段性不需要执行的内容可以使用continue
- 不论有无引用,都只能用于跳过一个循环
XMind: ZEN - Trial Version