JS基础

171 阅读5分钟

1、进制

   十进制
    0,1,2,3,4,5,6,7,8,9,10
    二进制
    0,1,10,11,100,101,110,111,1000,1001,1011,1111
    八进制 以三位进行切割形成了八进制  以0开始是8进制
    0 ,1,2,3,4,5,6,7,10,11,13,13
    十六进制  以四位二进制切割形成十六进制 0x开头的是16进制
    0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
    转换二进制
    54  110110
    110110=1*2(5)+1*2(4)+0*2(3)+1*2(2)+...
      
    0675676
    110 111 101 110 111 110
    0X F75B
    1111011101011011
    var a=0xff;
    a=a.toString(16);
    a=Number(a);
    a= Number(a,2); 255
    console.log(a);
     颜色 一种通过RGB色 255 255 255
                      FF  FF  FF 
    0xFF0000 FF透明度 透明度最高为1最低为0
    0xFF000
    0x00FF00
    0x0000FF
    0x000000黑色
    0xFFFFFF白色

    0xFFAA00橘黄色 红色多一些 黄色小一些
    矢量图 线条勾勒 
    一个像素必然就是一个纯色彩 8个16进制 FF算一个字节 4*160*160 102400
    一个图像大小会以2的2次幂增长 64 128 256 如180*180  但在内存中实际需要256
    存储的时候图像变成二进制,用的时候二进制再变成图像
    声音和图像分开保存 用的时候合并在一起

2.位运算

 代码不宜被别人看懂 用于专项的处理部分的内容
   &&逻辑运算 与
   1&1=1 1&0=0
   位运算&
25&34=0
011001
100010
000000
6&7=6;
任何数&2的N次幂-1都是 该数

37&7 只考虑后三位 5
        
        
 |运算
1|1=1;0|1=1;1|0=1;0|0=0;
25 34 (25|34)=59;
        111011=3*16+11=59;
        ^异或运算 相同的为0不同的为1
        6^7=1;
        0110 0111
        0001=1
      console.log(0^0);
        // 0^0=0  1^1=0
        // 0^1=1  1^0=1
  加密解密
  相同为0不同为1
  console.log(3627^1234);2809
  console.log(2809^1234);3627
   
   
  ~位非运算
  加1取负数
  ~1=-2;
  ~-5=4;
  var str="abcdef";
  if(~str.indexOf("a")){  g
       判断是否可以查找到该字符
   }
  if(!~str.indexOf("a")){
       不能在这个字符串中找到该字符
   }

3.三目运算符

var a=3>2?1 :0;
如果条件是否成立 返回紧跟条件的第一个值 否则返回:后面的第一个值。
console.log(a);
如果表达式的结果转换为布尔值为真时,返回问号后面的值,否则返回:后面的
三目运算符比赋值运算符的优先级高
问号前面的内容会自动隐式转换为布尔值
当需要返回的事布尔值时,请不要使用三目运算符
var a=3>2 ? true:false;
var a=3>2 ? 直接这么写
用于简单的条件处理
var a=1>2?1: 3<4 ? 0:-1;  0
var a=1;-10 4 6
a=a--?a++ :++a;
console.log(a);
console.log(a);


 var a=4;
 var b=a-=   0 ?a++ :++a;
 console.log(b,a); -1  -1
 
 
 var a = 4;
 b = a -=1 ? a++ : ++a;
 console.log(b, a);
 首先三目运算优先级比赋值高 b=a-=    1?a++ :++a;
 1 所以是 a++ ,b=a-=4 b=0 a=0
        
>>位移运算
  var a=4;
  a=a-=  1 ? a++:++a;
  consolelog(b,a);
  
 <input type="checkbox" id="div0">
   <label for="div0" id="lables">你好</label>
    var div0=document.getElementById("div0");
    var lables=document.getElementById("lables");
    div0.onclick=function(){
    lables.style.color=div0.checked ? "red" :"green"; } 

if语句

var a="101";
if(a*=10){
console.log(a); 1010
}在这里,条件不管什么表达式都会隐式转换为布尔值
! 在条件语句中大量用!配合完成不是这种非真进入

if(条件)[
如果条件表达式运算后隐式转换为布尔值是true,进入该条件语句
]

if(条件){

       }else{
            条件隐式转换为布尔值为false时进入
     }

 if(条件1){

        }else if(条件2){

        }else if(条件3){

        }else{

        } 
         这种仅执行其中一个条件结果
 
 
if(条件1){

        }
if(条件2){

        }
if(条件3){

        } 
        // 每个条件都会判断,根据判断结果执行对应的内容

一个方块在另一个方块中,不让其出框
    var x,y

        // if(x<0) x=0;
        // if(x+50>500) x=500-50;
        // if(y<0) y=0;
        // if(y+50>500) y=500-50;

5代码块

switch(表达式){
            case 值1:
            // 当表达式绝对等于值1时执行这里的内容
            // break  跳出,如果不写break不判断值2是否相等,直接穿越
            break;
            case 值2:
              // 当表达式绝对等于值2时执行这里的内容
            break;
            case 值3:
              // 当表达式绝对等于值3时执行这里的内容
            break;
            case 值4:
              // 当表达式绝对等于值4时执行这里的内容
            break;
            default:
            // 默认以上条件都不满足时执行这里
        } 
        
// 用来实现状态机
       /*  var status="";
        const RUN="run";
        const WALK="walk";
        const JUMP="jump";
        const FIRE="fire";

        status=RUN;
        switch(status){
            case RUN:
            console.log("跑步动画")
            break;
            case WALK:
            console.log("走路动画")
            break;
            case JUMP:
            console.log("跳跃动画")
            break;
            case FIRE:
            console.log("开火动画")
            break;
            default:
        } */

判断成绩等级
         switch(true){
            case score>=90 && score<=100:
             console.log("优秀");
            break;
            case score>=80:
            break;
            case score>=70:
            break;
            case score>=60:
            break;
            default:
            
        } 
        

while

while效率高于for
程序为了可维护,写代码时必须不能够重复

while(条件){

}条件表达式的值都是将结果转换为布尔值完成的 只有一句话的时候 while后面可以不带{}

  var i=0;
      var j=0;
       循环前增加id:
      xietian:while(i++<10){
          j=0;
          while(j++<10){
               break 跳出到指定的id位置
            if(i*j>100) break xietian;
          }
      }
      console.log(i,j);