位运算
- 位与运算 (&)
- 只有1与1为1,0与其他都为0
- 任何个位数数与2的n次幂-1 相与,都为原数值
- 多位数与2的n次幂-1相与,只看n位后面的几位
- 位或运算 (|)
- 1 | 1 = 1 0 | 其他 = 其他
- 规律:
- 相同位数,n位数与2的n次幂 相或 ,为原数值
- 不同位数,与2的n次幂相或,为两个数值相加
- 2的n次幂-1 与 小于他的数相或,都是2的n次幂-1
- 异或运算
- 相同为0,不同为1
- 常用于加密,解密
- 位非运算
- 加 1 取负数
<< 左移运算>> 右移运算
三目运算 a=3>2? 1 : 0
- 判断条件是否成立,如果条件成立返回第一个值,不成立返回第二个值
- 如果表达式结构转换为布尔值为真,返回问号后面的值。否则第二个值
- 问号前面内容自动隐式转换为布尔值
- 当需要返回的是布尔值或者多层判断时,不要使用三目运算符
- 尽量不要使用+=或者-=,如果使用则加括号,否则会与预期不符
- 三目运算符比赋值运算优先级高
流程控制语句
- 条件语句
- if(条件为真){条件为真时执行的语句}
- 可以直接在判断语句中写入其他运算符,缩减代码
- 在条件语句中,大量使用!配合完成非真转入
- 如果if() 只有一个语句,可以省略花括号
- 在这里,条件不管什么表达式都会隐式转换为布尔值
- if(条件表达式){语句1}else{语句2}语句3
- if语句也成为“选择语句”、“条件判断语句”
- if...else if....else
- 仅执行其中一个条件结果
- if语句的嵌套
- switch() case...default
- 优点
- 执行清晰
- 判断语句天然绝对相等
- 可以进行穿透
- switch()括号内都可以是表达式的值,会进行隐式转换
- case值可以是运算后的结果
- default
- 默认以上情况都不满足执行相应的语句
- break
- 表示跳出当前条件,若不写break,不会判断下面的值,直接穿透
- break 阻止代码自动的向下一个case运行
- 优点
- if(条件为真){条件为真时执行的语句}
- break
- 单独break语句,只能跳出当前循环,若在循环前增加ID(设置锚点:),break id名,可以直接退出锚点绑定的循环
- 能够提高性能
- continue
- 遇到满足条件的,跳到下一次循环,然后继续向后面判断,与continue同属于一个循环后面的语句不再执行
- 注意:当遇到continue时,要把循环变量++ 或者-- 提到continue语句前面。否则不被执行
- 当整个循环中遇到阶段性不需要执行的内容可以使用continue
- 循环语句
- while
- 当只有一个语句时,可以省略花括号
- 案例:
打印九九乘法表 var a5=0,b5=0; document.write("<table>") while(a5++<row-1){ b5=0; document.write("<tr>"); while(b5++<a5) document.write("<td>"+ a5 +"*"+ b5 +"="+a5*b5+"</td>") } document.write("</table>");打印水仙花数 var i=1,j=0,k=0,num=0; abc:while(i<10){ j=0; while(j<10){ k=0; while(k<10){ if(i*i*i+j*j*j+k*k*k === i*100+j*10 + k){ num = i*100+j*10+k; document.write(num7 + " "); } k++; } j++; } i++; } - while