Js基础知识

1、变量定义

    var 变量名=变量值;

2、变量不能以数字开头

  var ____=23;(是对的,不规范)

3、查看数据的类型

    alert(typeof(变量名));

4、数据类型

    数字类型:number

    字符类型:string                 空字符也是字符类型

    空类型:null

    未定义类型:Undefined       表示没有定义

    布尔类型: bool(boolean)     true false

    复合数据类型:复杂类型       array数组   object对象

     var abcd=null;

     alert(typeof(abcd));          //object

      注意:空类型与空字符串没有半毛钱关系

5、alert(): 弹出一个窗口(会停止程序的运行)

6、firebug调试

    注意:不要太相信firebug,认真就会输

    火狐可以直接安装附加组件firebug

    控制台->全部->F5->找错

7、运算符

    1、赋值运算符 =

    2、算数运算符 +  -  *  /  %(取余)  ++(递增1)  --(递减1)

       i++:先自增再使用

       ++i:先使用再自增

8、比较运算符

    >  <  >=  <=  ==(等于)  !=(不等于)  ===(全等于)  !==(不全等于)

    ==:判断2个值是否相同(仅仅是判断值)

    ===:判断2个值是否相等(判断值和数据类型)

    例: var i=24; var j="24";

        alert(typeof(i==j));   //true

        alert(typeof(i===j)); //false

9、逻辑运算符

    !(非)   &&(逻辑与:两个条件同时满足为true;如果有任一个为false,结果就为false)  ||(逻辑或:两个条件满足任意一个为true,都不满足为true)

10、复合赋值运算符

    +=  -=  *=  /=

11、字符串运算符 +(连接+两边的内容)

    当+两边任意一边有字符串,就会执行字符串+

12、js的语法规则与注释

    区分大小写;所有的符号都必须是英文状态下的

    每行表达出想要表示的意思;每行最后必须加上分号(英文状态)

    注释:单行注释 //            多行注释 /*  ...    */

13、位运算符

    二进制: 0  1

    十进制: 0 1 2 3 4 5 6 7 8 9

    十六进制: 0 1 2 3 4 5 6 7 8 9 10 A B C D E

14、运算符的优先级

    1、小括号最优先

    2、逻辑与  大于  逻辑或

    3、赋值运算符最后进行

    4、当有多个运算符参与运算的时候,脑子里必须有意识知道运算符是有优先级的。

15、alert("<p>你好</p>")与documentwrite(<p>你好</p>")的区别

    documentwrite()是在body里的,能识别标签

    alert()是浏览器里的,不能识别html标签,将原样输出。

16、switch扩展

    var x = 44;

    switch(true){

        case x>40:

            document.write('大于40');

            break;

        case x<=40:

            document.write('小于等于40');

            break;

17、传值:把一个变量传递给另外一个变量

    赋值传值:两份数据,两份数据之间不会影响

    引用传值:一份数据,任意一个改动值另外一个都会受到影响

    注意:在简单数据的传值中,都是赋值传值;而复杂数据都是引用传值

    数组定义: var n={name:"张三",age:27};

    var m=n;  alert(m.name);//张三

18、流程控制值if语句

     1、if语句

           if(条件){语句块}

     2、if else 语句

           if(条件){语句块1}else{语句块2}

     3、if,elseif,elseif语句

           if(条件){语句块1}else if(条件){语句块2}else if(条件){语句块3}......

     4、if,elseif,elseif..else语句

           if(条件){语句块1}else if(条件){语句块2}else if(条件){语句块3}......else{不满足之前任意一个就执行此处语句块}

19、switch语句

      switch(条件){case 值1:语句块;break;case 值2:语句块;break;case 值3:语句块;break;default:语句块;break;}  //最后的berak可以不加

20、switch扩展

      var n=97;    switch(true){case n>80:document.write("优秀");break;

                   case n>70:document.write("良好");break; }

21、while循环

     循环3要素:循环变量的初始化;循环条件的判断;循环变量的改变。

      var i=1;  while(i<=100){循环体;  //循环变量的改变    i+=5;}

22、dowhile循环

      var i=1;   do{循环体  i++;}while(i<=100)

      最少执行一次

7、for循环

          for(循环变量的初始化;循环条件的判断;循环变量的改变){循环体}

          for(var i=1;i<7;i++){

    alert("h"+i);

    document.write("<h"+i+">H"+i+"</h"+i+">");}

23、练习:九九乘法表

24、星星金字塔代码:

    <script type="text/javascript">

    document.write("<p align='center'>");

        for(var i=1;i<=5;i++){

        for(var j=1;j<=2*i-1;j++){

                document.write("*");

            }

        document.write("<br/>");

        }

        document.write("</p>");

    </script>

25、函数:一段能够自动完成某些功能的代码

     语法:  function   函数名(形参1,形参2...形参n){函数体}

     调用:函数名(实参1,实参2...实参n)    function area(r)

  注意:1、函数执行过后会回到调用它的位置

            2、函数写好之后自己是不会执行的,需要调用它才能执行

26、var c=Math.pow(he,0.5);   //开平方

27、函数名:不要和系统函数以及关键词相同,要起的有意义

28、firebug:

     点到firebug脚本;点击某个位置添加断点;刷新;点击单步进入

29、平时只会关注局部变量;只要在函数内部定义变量就必须有意识的知道,存在作用域的问题

30、返回值 return

    return:        跳出函数,不再执行

    return 值:   跳出函数,同时把值返回到调用函数的位置

     注意:  如果有返回值,必须接收返回值

31、函数的位置:可以先定义,后调用;也可以先调用,再定义

32、数组 arr.length;数组的长度

      var arr=[22,23,24];

33、二维数组的定义

     var arr=[[23,24,25],[22,21],[45,47,99]];

34、求二维数组最大值

    //定义一个二维数组

       var arr=[[22,23,24,22],

        [54,66,98,54],

        [999,1]];

    //定义最大值

    var max=arr[0][0];

    //定义最大值的i,j下标

    var bi;

    var bj;

    for(var i=0;i<arr.length;i++){

        for(var j=0;j<arr[i].length;j++){

                if(max<arr[i][j]){

                        max=arr[i][j];

                        bi=i;

                        bj=j;

                    }

            }

        }

    document.write("这个数组最大的数字是:"+max+"<br/>");

    document.write("最大数的下标是:["+bi+"]["+bj+"]<br/>");

        结果是:      这个数组最大的数字是:999

            最大数的下标是:[2][0]

35、系统内部的函数

    parseInt():取整(如果字符串开头第一个是字母,那么就会出现NaN)

    parFloat:取浮点数

    NaN:not a number不是一个数字

    isNaN:is not a number

        1、如果判断的为数字:false

        2、如果判断的为字符串:true

36、Array对象

    属性:length获取数组的长度

    方法:concat(a,b,[c,d]) 往数组中加数据(可以是任意数据)

           join(" ") 加入某个字符,用n连接数组的某项组成字符串,

        其实就是把都好替换成n,如果空字符串连接,直接连接数组每项内容

           pop():删除数组的最后一项并返回数组最后一项

           push(28):加入新的内容,返回新的长度

           reverse():反转数组的顺序内容

37、属性和方法的一些形式

    属性:   对象名.属性

    方法:   对象名.方法()

38、String对象

    var String=new String("wqeqfw");

    属性: length

    方法:chartAt(n):找到索引位置的字符

            charCodeAt(n):找到索引位置上字符的ASCLL值  a(97)   A(65)

            indexOf("m"):找m在字符串中第一次出现的位置,没找到返回-1

            lastIndexOf("m"):找m在字符串中最后一次出现的位置,没找到就返回-1

            split(n):以字符n分割字符串返回一个数组,以空字符串分割会把字符串每个字符都当做数组的一项内容,

           如果不存在n,那么会把整个字符当做数组的内容

            substr(n,m):截取字符串,把字符串从n的位置开始截取,截取m个;如果只有一个参数n,那就是从n开始截取所有的

            subString(n,m):从n的位置开始,截取到m的位置,注意:包左不包右

            toLowerCase():把字符串中的字母转换为小写

            toUpperCase():把字符串中的字母转换为大写

39、Math对象

    Math.pow(n,m);    求n的m次方

    Math.abs(n);    求n的绝对值

    Math.round(n);    求n四舍五入的值

    Math.floor(n);    求n的向下取整的值,不大于n的最大整数

    Math.ceil(n);    求n的向上取整的值,不小于n的最小整数

    Math.random();    获得一个0-1之间的随机数,能取到0但是取不到1

        取 10-20随机数:Math.random()*10+10

        求n-m之间的随机数(n<m):Math.random()*(m-n)+n;

    求任意两个数之间的随机数[m,n]

    Math.floor(Math.random()*(大数-小数+1)+小数)

40、js特殊字符

    '  : 单引号

    " : 双引号

    \ : 转义字符

    alert()换行  \r\n  换行效果

    \r : 回车

    \n : 换行