1. 程式人生 > >JavaScript【8】簡單入門

JavaScript【8】簡單入門

概念: 一門客戶端指令碼語言

    * 執行在客戶端瀏覽器中的。每一個瀏覽器都有JavaScript的解析引擎
    * 指令碼語言:不需要編譯,直接就可以被瀏覽器解析執行了

功能:

    * 可以來增強使用者和html頁面的互動過程,可以來控制html元素,讓頁面有一些動態的效果,增強使用者的體驗。

JavaScript發展史:

    1. 1992年,Nombase公司,開發出第一門客戶端指令碼語言,專門用於表單的校驗。命名為 : C--    ,後來更名為:ScriptEase
    2. 1995年,Netscape(網景)公司,開發了一門客戶端指令碼語言:LiveScript。後來,請來SUN公司的專家,修改LiveScript,命名為JavaScript
    3. 1996年,微軟抄襲JavaScript開發出JScript語言
    4. 1997年,ECMA(歐洲計算機制造商協會),制定出客戶端指令碼語言的標準:ECMAScript,就是統一了所有客戶端指令碼語言的編碼方式。

    * JavaScript = ECMAScript + JavaScript自己特有的東西(BOM+DOM)

ECMAScript:客戶端指令碼語言的標準

1. 基本語法:

        1. 與html結合方式
            1. 內部JS:
                * 定義<script>,標籤體內容就是js程式碼
            2. 外部JS:
                * 定義<script>,通過src屬性引入外部的js檔案

            * 注意:
                1. <script>可以定義在html頁面的任何地方。但是定義的位置會影響執行順序。
                2. <script>可以定義多個。

2. 註釋

            1. 單行註釋://註釋內容
            2. 多行註釋:/*註釋內容*/

3. 資料型別:

            1. 原始資料型別(基本資料型別):
                1. number:數字。 整數/小數/NaN(not a number 一個不是數字的數字型別)
                2. string:字串。 字串  "abc" "a" 'abc'
                3. boolean: true和false
                4. null:一個物件為空的佔位符
                5. undefined:未定義。如果一個變數沒有給初始化值,則會被預設賦值為undefined

            2. 引用資料型別:物件

4. 變數

            * 變數:一小塊儲存資料的記憶體空間
            * Java語言是強型別語言,而JavaScript是弱型別語言。
                * 強型別:在開闢變數儲存空間時,定義了空間將來儲存的資料的資料型別。只能儲存固定型別的資料
                * 弱型別:在開闢變數儲存空間時,不定義空間將來的儲存資料型別,可以存放任意型別的資料。
            * 語法:
                * var 變數名 = 初始化值;

            * typeof運算子:獲取變數的型別。
                * 注:null運算後得到的是object

5. 運算子

1. 一元運算子:只有一個運算數的運算子

                ++,-- , +(正號)  
                * ++ --: 自增(自減)
                    * ++(--) 在前,先自增(自減),再運算
                    * ++(--) 在後,先運算,再自增(自減)
                * +(-):正負號
                * 注意:在JS中,如果運算數不是運算子所要求的型別,那麼js引擎會自動的將運算數進行型別轉換
                    * 其他型別轉number:
                        * string轉number:按照字面值轉換。如果字面值不是數字,則轉為NaN(不是數字的數字)
                        * boolean轉number:true轉為1,false轉為0

2. 算數運算子

                + - * / % ...

3. 賦值運算子

                = += -+....

4. 比較運算子

                > < >= <= == ===(全等於)
                * 比較方式
                  1. 型別相同:直接比較
                      * 字串:按照字典順序比較。按位逐一比較,直到得出大小為止。
                  2. 型別不同:先進行型別轉換,再比較
                      * ===:全等於。在比較之前,先判斷型別,如果型別不一樣,則直接返回false

5. 邏輯運算子

                && || !
                * 其他型別轉boolean:
                   1. number:0或NaN為假,其他為真
                   2. string:除了空字串(""),其他都是true
                   3. null&undefined:都是false
                   4. 物件:所有物件都為true

6. 三元運算子

                ? : 表示式
                var a = 3;
                var b = 4;

                var c = a > b ? 1:0;
                * 語法:
                    * 表示式? 值1:值2;
                    * 判斷表示式的值,如果是true則取值1,如果是false則取值2;

7. 流程控制語句:

            1. if...else...
            2. switch:
                * 在java中,switch語句可以接受的資料型別: byte int shor char,列舉(1.5) ,String(1.7)
                    * switch(變數):
                        case 值:
                * 在JS中,switch語句可以接受任意的原始資料型別
            3. while
            4. do...while
            5. for

8. JS特殊語法:

            1. 語句以;結尾,如果一行只有一條語句則 ;可以省略 (不建議)
            2. 變數的定義使用var關鍵字,也可以不使用
                * 用: 定義的變數是區域性變數
                * 不用:定義的變數是全域性變數(不建議)

練習:99乘法表

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>99乘法表</title>
            <style>
                td{
                    border: 1px solid;
                }

            </style>

            <script>

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


                //1.完成基本的for迴圈巢狀,展示乘法表
                for (var i = 1; i <= 9 ; i++) {
                    document.write("<tr>");
                    for (var j = 1; j <=i ; j++) {
                        document.write("<td>");

                        //輸出  1 * 1 = 1
                        document.write(i + " * " + j + " = " + ( i*j) +"&nbsp;&nbsp;&nbsp;");

                        document.write("</td>");
                    }
                    /*//輸出換行
                    document.write("<br>");*/

                    document.write("</tr>");
                }

                //2.完成表格巢狀
                document.write("</table>");

            </script>
        </head>
        <body>

        </body>
        </html>

2. 基本物件:

1. Function:函式(方法)物件

            1. 建立:
                1. var fun = new Function(形式引數列表,方法體);  //忘掉吧
                2. 
                    function 方法名稱(形式引數列表){
                        方法體
                    }

                3. 
                   var 方法名 = function(形式引數列表){
                        方法體
                   }
            2. 方法:

            3. 屬性:
                length:代表形參的個數
            4. 特點:
                1. 方法定義是,形參的型別不用寫,返回值型別也不寫。
                2. 方法是一個物件,如果定義名稱相同的方法,會覆蓋
                3. 在JS中,方法的呼叫只與方法的名稱有關,和引數列表無關
                4. 在方法宣告中有一個隱藏的內建物件(陣列),arguments,封裝所有的實際引數
            5. 呼叫:
                方法名稱(實際引數列表);

2. Array:陣列物件

            1. 建立:
                1. var arr = new Array(元素列表);
                2. var arr = new Array(預設長度);
                3. var arr = [元素列表];
            2. 方法
                join(引數):將陣列中的元素按照指定的分隔符拼接為字串
                push()  向陣列的末尾新增一個或更多元素,並返回新的長度。
            3. 屬性
                length:陣列的長度
            4. 特點:
                1. JS中,陣列元素的型別可變的。
                2. JS中,陣列長度可變的。

3. Date:日期物件

            1. 建立:
                var date = new Date();

            2. 方法:
                toLocaleString():返回當前date物件對應的時間本地字串格式
                getTime():獲取毫秒值。返回當前如期物件描述的時間到1970年1月1日零點的毫秒值差

4. Math:數學物件

            1. 建立:
                * 特點:Math物件不用建立,直接使用。  Math.方法名();

            2. 方法:
                random():返回 0 ~ 1 之間的隨機數。 含0不含1
                ceil(x):對數進行上舍入。
                floor(x):對數進行下舍入。
                round(x):把數四捨五入為最接近的整數。
            3. 屬性:
                PI

5. RegExp:正則表示式物件

            1. 正則表示式:定義字串的組成規則。
                1. 單個字元:[]
                    如: [a] [ab] [a-zA-Z0-9_]
                    * 特殊符號代表特殊含義的單個字元:
                        \d:單個數字字元 [0-9]
                        \w:單個單詞字元[a-zA-Z0-9_]
                2. 量詞符號:
                    ?:表示出現0次或1次
                    *:表示出現0次或多次
                    +:出現1次或多次
                    {m,n}:表示 m<= 數量 <= n
                        * m如果預設: {,n}:最多n次
                        * n如果預設:{m,} 最少m次
                3. 開始結束符號
                    * ^:開始
                    * $:結束
            2. 正則物件:
                1. 建立
                    1. var reg = new RegExp("正則表示式");
                    2. var reg = /正則表示式/;
                2. 方法   
                    1. test(引數):驗證指定的字串是否符合正則定義的規範 

6. Global

            1. 特點:全域性物件,這個Global中封裝的方法不需要物件就可以直接呼叫。  方法名();
            2. 方法:
                encodeURI():url編碼
                decodeURI():url解碼

                encodeURIComponent():url編碼,編碼的字元更多
                decodeURIComponent():url解碼

                parseInt():將字串轉為數字
                    * 逐一判斷每一個字元是否是數字,直到不是數字為止,將前邊數字部分轉為number
                isNaN():判斷一個值是否是NaN
                    * NaN六親不認,連自己都不認。NaN參與的==比較全部問false

                eval():講 JavaScript 字串,並把它作為指令碼程式碼來執行。
            3. URL編碼
               狗子 =  %E7%8B%97%E5%AD%90