js基础-2

218 阅读3分钟

位运算

  • 位与运算 (&)
    • 只有1与1为1,0与其他都为0
    • 任何个位数数与2的n次幂-1 相与,都为原数值
    • 多位数与2的n次幂-1相与,只看n位后面的几位
  • 位或运算 (|)
    • 1 | 1 = 1 0 | 其他 = 其他
    • 规律:
      1. 相同位数,n位数与2的n次幂 相或 ,为原数值
      2. 不同位数,与2的n次幂相或,为两个数值相加
      3. 2的n次幂-1 与 小于他的数相或,都是2的n次幂-1
  • 异或运算
    • 相同为0,不同为1
    • 常用于加密,解密
  • 位非运算
    • 加 1 取负数
  • << 左移运算
  • >> 右移运算

三目运算 a=3>2? 1 : 0

  • 判断条件是否成立,如果条件成立返回第一个值,不成立返回第二个值
  • 如果表达式结构转换为布尔值为真,返回问号后面的值。否则第二个值
  • 问号前面内容自动隐式转换为布尔值
  • 当需要返回的是布尔值或者多层判断时,不要使用三目运算符
  • 尽量不要使用+=或者-=,如果使用则加括号,否则会与预期不符
  • 三目运算符比赋值运算优先级高

流程控制语句

  1. 条件语句
    • if(条件为真){条件为真时执行的语句}
      • 可以直接在判断语句中写入其他运算符,缩减代码
      • 在条件语句中,大量使用!配合完成非真转入
      • 如果if() 只有一个语句,可以省略花括号
      • 在这里,条件不管什么表达式都会隐式转换为布尔值
    • if(条件表达式){语句1}else{语句2}语句3
      • if语句也成为“选择语句”、“条件判断语句”
    • if...else if....else
      • 仅执行其中一个条件结果
    • if语句的嵌套
    • switch() case...default
      • 优点
        • 执行清晰
        • 判断语句天然绝对相等
        • 可以进行穿透
      • switch()括号内都可以是表达式的值,会进行隐式转换
      • case值可以是运算后的结果
      • default
        • 默认以上情况都不满足执行相应的语句
      • break
        • 表示跳出当前条件,若不写break,不会判断下面的值,直接穿透
        • break 阻止代码自动的向下一个case运行
  2. break
    • 单独break语句,只能跳出当前循环,若在循环前增加ID(设置锚点:),break id名,可以直接退出锚点绑定的循环
    • 能够提高性能
  3. continue
    • 遇到满足条件的,跳到下一次循环,然后继续向后面判断,与continue同属于一个循环后面的语句不再执行
    • 注意:当遇到continue时,要把循环变量++ 或者-- 提到continue语句前面。否则不被执行
    • 当整个循环中遇到阶段性不需要执行的内容可以使用continue
  4. 循环语句
    • 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 + "&emsp;");
                    }
                    k++;
                }
                j++;
            }
            i++;
        }