javascript基础学习

js规范
  •     缩进一个tab = 4个空格
  •     +  *  左右都要有一个空格
  •     每一条语句后面都要跟一个;分号

 

         查看js错误
             1.firefox firebug
             2.google  google控制台

 

         字符串类型和其他类型相加,自动转换成字符串类型,所做的就是字符串拼接 
          1.与 NaN(not a number)进行算数运算,结果依旧是 NaN,包括 NaNNaN进行运算也是 nun自己  var num=1-"2a"; 结果"2a"转换成数字 NaNNaN减去 NaN也是 NaN,
          2.纯数字的字符串将转换成数字与数字进行相加   var num= 1+ "1"; 结果是转换成了数字2,
          3.任何其他数据类型除了和字符串,和数字进行运算,会自动转换成数字再进行运算,
      true = 1;
      false = 0;
      null = 0;
      undefined = NaN;
      var num = 1 + true;//结果数字2.

 

         强制数据转换  
             var tmp = boolean(-1); 结果为 true,0为 false
             var tmp = boolean(""); 结果为 false,有字符串为 truenullundefinedfalse
             Numer()Number(true); 为1, false为0, "20a"结果为 NaN, null为0, undefinedNaN,
             ParseInt(),取整,类型为 Number,兼容 Number功能,  ParseInt("20a"); 结果为20,
             ParseFloat();浮点数,类型为 Number
              var num = 1 / 0; 结果为 infinty,无穷大,  var num = -1 / 0; 结果为 -infinty,无穷小

 

         1,一元运算符 
            只能操作一个值得运算符, a++, ++a, a--, --a
         2,关系运算符 
            如果都是数值,比较大小,如果都是字符串,则比较 ASCII字符编码值  alert("abc">"abd"); 从第一个一个一个比较,cfalse。
    两个操作数如果有一个是数值,则将另一个转换成数值进行比较,  alert(2 > true);  true为1,
            一个操作数 NaNalert(1 == NaN); 返回 false,!=返回 true, NaN自身不相等,  alert(NaN != NaN); ,则返回 true.
            全等===,全不等!==,  alert(20 === "20"); 返回 false,数据类型不同, 
    alert(20 == "20"); 返回 true,转换成数值后相比较
         3,逻辑运算符 
             1.与&&,左右都为真,才为真,如果第一个判定为假,则不进行第二个表达式判断,返回假(短路操作),
             2.或||,左右有一个真,返回真,左右都为假,才返回假(断路操作),如果第一个表达式为真,则不进行第二个表达式的判断,返回真,
             3.非!,将任何值先进行布尔运算,取反,  alert(!infinity); 返回false,  alert(!NaN); 返回 true
         位运算:
            应用层开发(面向对象语言), object+c->c语言->汇编->二进制(机器码)
            多个逻辑运算符的时候,先运算 &&后运算 ||year % 400 == 0 || year % 4 == 0 && year % 100 != 0;  
        
         二进制转换 
            1:十进制转换成二进制,除2取余,余数倒序排列得到结果,
            2:二进制转换成十进制, 110100 1*2^2+1*2^4+1*2^5=52,从右向左依次0开始,遇到1则算2的几次方相加,
            3:十进制转八进制/十六进制,先将十进制转换成二进制,再将二进制转换成八进制/十六进制。
            二进制转八进制,从右向左,每三个分为一组,不足三位的用0补足,每组转换成十进制, 110 011->63
            八进制转十进制,63, 3*8^0+6*8^1=51,
            二进制转十六进制,从右向左,每四个分为一组,不足四位的用0补足,每组转换成十进制,0011  0011->33
            十六进制转十进制,33, 3*16^0+3*16^1=51,

 

         三目运算符/条件运算符
             表达式:表达式1 ?表达式2 :表达式3;
            如果表达式1为非0(真),则求解表达式2,如果表达式1为0(假),则求解表达式3,
    var num1 = 20;
    var num2 = 10;
     alert(num1 > num2 ? num1 : num2 );//判断num1是否大于num2,如果条件成立,这返回第一个num1,如果条件不成立,则返回num2

 

         breakcontinue再循环语句中的应用, break跳出循环, continue则跳过下面的运算继续下一次循环。

 

         函数
            当他被调用时可执行的重复使用的代码块
             var show = function(){}; 因为右边没有函数名称,一般称为匿名函数
             function 函数名(){函数体;}, aguments内置的数组  function sum(){alert(aguments[0])};   sum(3,4,5); 输出3,
            函数如果没有返回值,则不能赋值,需要 return一个值。 return一般放在最后,执行到 return后结束,后面的语句不执行
        
    var num = parseInt("20a") ;//num等于20;
       alert(typeof num);//返回num的数据类型number;

 

        判断闰年  
 function leapyear(a){
            if(a % 4 == 0  && a % 100 != 0 || a % 400 == 0  )//条件不能被100整除,并且能被4整除,异或可以被400整除
            {return true;}
            else{return false;}
        }
        alert(leapyear(2000)); 

 

      判断是否是素数 
 function prime(num){
            var  isyes = true;
            for(i = 2; i ){
                if(num % i == 0){//如果被小于任何自己的数且这个数大于等于2的数整除
                    return num +"不是素数"+!isyes;//返回不是素数
                    break;
                }
            }
            return num +"是素数"+isyes;
        }
        alert(prime(8));

 

    递归函数
   函数可以自己调用自己,称为递归,特点:必须有参数,必须要 return
       工作当中不会使用递归函数,短时间内会导致内存剧增
      
  function sum(n){
            if(n == 1){
                return 1;
            }
            return sum(n - 1) + n;
        }
        alert(sum(50)); 

 

    斐波拉契函数
        一开始有一对兔子,到四月的时候,兔子会出生一对新的兔子
    1mon     2mon    3mon    4mon
        1        0         0         0
        0        1         0         0
        0        0         1         0
        1        0         0         1 
        1        1         0         1
         4月的总数 = 上个月的三月份兔子 + 这个月新出生的兔子,这个循环同样试用与99月100月
         rabbit(4)sum = rabbit(3) + rabbit(1)
       
 function rabbit(month){
            if(month < 4){
                return 1;
            }
            return rabbit(month -3) + rabbit(month - 1);//增加的兔子加上上个月的总数兔子递归,就是这个月的总数兔子,
        }
        rabbit(10);

 

 

你可能感兴趣的:(javascript基础学习)