js基本語法彙總

      注意 轉載須保留原文連接(http://www.cnblogs.com/wzhiq896/p/6783296.html ) 做者:wangwen896 整理 

一、分類

ECMAScript  js基本語法與標準
DOM         Document Object Model文檔對象模型
BOM         Browser Object Model瀏覽器對象模型

    tips:DOM和BOM都是一套API(Application programing interface)

二、註釋方式

style   /*  */
body    <!-- --!>
script  //
        /* */
        /**
        *   js說明文檔註釋
        */

三、簡單指令

alert("");          提示框;
confirm("");        確認框,點擊後會響應返回true或false;             
prompt();           彈出一個輸入框;
document.write("");
console.log("");    在控制檯打印相應的信息;
console.dir("");    在控制檯打印出該對象的全部信息;

四、變量命名

數字(0-9)、字母(a-z,A-Z)、下劃線(_);
    tips:應避免保留字和關鍵字;

五、NaN和isNaN

isNaN(number),若是number不是數字,則爲true;
Number(number),在轉換爲數字類型時,若number不是數字,則返回NaN;

六、轉義字符

\       
\r  回車
\n  空格
\t  縮進
\\  反斜槓

七、邏輯短路、邏輯中斷

true || 6;      邏輯或短路,左邊爲ture返回右值;
6   &&  true;   邏輯與短路,左邊false返回右值;

八、優先級

* / %
    +   -
    &&
    ||
    ?
tips:自上而下優先級愈來愈高

九、類型轉換(type)

parseInt("12a3");   轉爲數字,嘗試強轉;
parseFloat("123.123");

data.toString();
String(data);

    tips:變量聲明未賦值,其值爲undefined;
        對象爲空,其值爲null;

十、三元表達式

eg  :   a>b?a=1:a=2;

格式:
    判斷條件?true的時候執行的操做:false的時候執行的操做;

十一、數組Array

(1)、定義法
    構造函數:
            var arr = new Array("123","abc","xxx");
    字面量:
            var arr = ["123","646","abc"]; 
    數組長度:
            var arr = new Array(6);(數組長度爲6);
(2)、賦值
    arr[0]=1;

十二、形參和實參

定義函數時,function funcA(a,b,c){},其中的a、b、c即爲形參;
調用函數時,funcA(1,2,3);其中的一、二、3即爲實參;

tips:function裏面有一個arguments對象,裏面存有全部傳進函數的實參;

1三、函數function

(1)、函數命名
    一、  可使用字符、數字、下劃線、$;
    二、  不能以數字開頭;
    三、  不能使用關鍵字和保留字;
    四、  區分大小寫;

    五、  建議要有意義 --  動詞+名字結構;
    六、  駝峯命名法;
    七、  函數名不能重名,後面寫的重名函數會把前面寫的函數給覆蓋掉;

(2)、函數的返回值
返回值:
    當函數執行完畢以後,所獲得的結果就是一個函數返回值
    任意函數都有返回值

一、  在函數內部沒有顯示的寫有return的時候,函數的返回值是undefined;
二、  當函數內部有return,可是return後面沒有跟着任何內容或者數據的時候,
函數的返回值是undefined,而且return後面的代碼不會執行;
三、  當return後面跟着內容或者數據的時候,函數的返回值就是這個跟着的內容或者數據;


(3)、函數的四種形式:
    一、沒有參數,沒有return;
            一般在於封裝一段過程;
    二、沒有參數,有return;
            一般用於內部封裝引用其餘函數(閉包,回調);
    三、有參數,沒有return;
            一般用於執行操做的封裝;
    四、有參數,有return;
            常見形式;

(4)、匿名函數
    匿名函數的name屬性值爲anonymous;
    函數僅用一次的狀況,即用即廢;

    eg:
        setTimeout(function(){
            console.log(this.name);
        },1000);
    tips:在1秒後在控制檯打印出本函數的名稱;

(5)、回調函數
    在一個函數當中,另外一個函數做爲參數傳入該函數中,另外一個的這個函數即爲回調函數;
    eg:
        function atack(callback){
            return callback;
        }
    tips:在調用該函數時,指定callback是哪一個函數;
        atack(func);

(6)、短路運算
    做用:防止傳入函數的數據不足,形成沒法運行;
    eg:
        function getResult(a,b,fn) {
            fn && fn();
        }(一般使用邏輯與的短路來決定是否執行回調函數;)

        function getResult_2(a,b){
            a || 0;
        }(一般用邏輯或的短路來防止實參不足的狀況,強行賦值;)

(7)、自執行函數
    (function func2(){

    })()

    tips:在函數定義的結束最後寫入一個(),該函數定義完成後直接被調用執行;

(8)、遞歸
    在函數執行的最後再一次的調用自身;

    tips:遞歸是一種很是耗資源的作法,一般爲了簡化運算,還會結合緩存進行;
    而且注意,遞歸必需要有結束判斷條件(if),不然該函數被調用後就是死循環;

1四、數據類型

(1)、簡單數據類型
    string、number、boolean

(2)、複雜數據類型
    String、Number、Boolean、Array、Math、Date、Obeject、function、RegExp(正則表達式)

(3)、空數據類型
    * Null  ---→Null的數據類型會返回一個Object
    * undifined

    tips:用typeof能夠進行判斷數據類型;

    tips:定義的簡單數據類型變量,其數據保存在變量中;
        而複雜數據類型,其變量保存的是數據所在的內存地址;

1五、內置對象

Array、Date、Math、String;

1六、(Math)數學對象

向上取整        Math.ceil(number);
向下取整        Math.floor(number);

四捨五入        Math.round(number);

求多個數字之間的最大值     Math.max();
求多個數字之間的最小值     Math.min();

求x的y次冪      Math.pow(x,y);

求正弦值            Math.sin(x);
    example:
        求一個角度的正弦值,要求x必須是一個額弧度值
        角度和弧度的轉換公式:
            弧度 = 角度 * 2 * Math.PI / 360;

        Math.sin(30*2*Math.PI/360)

Math.abs(x);    獲得一個數字的絕對值

1七、(Array)數組對象

(1)、arr1.concat(arr2);
        數組拼接,結果爲將arr2拼接到arr1的最後;

(2)、arr.join();
        數組字符串輸出,括號內能夠指定元素鏈接的符號;
        eg:
            arr=["a","b","c","d"];
            console.log(arr.join("|"));     (結果爲"a|b|c|d")

(3)、arr.pop();
        切除數組的最後一個元素,返回值爲該元素;

(4)、arr.slice(start,end)
        獲取,獲取數組的指定片斷,start必須有,若是參數爲負數則從末尾開始選取;
        返回值爲該片斷組成的,一個新的數組;

(5)、arr.push
        添加,用於向數組的末尾添加新的元素,參數能夠是多個;
        返回值爲數組的新長度;

(6)、arr.splice
        一、用於向數組中指定的索引添加元素;
            arr.splice(2, 0, "William","asdfasdf");
                在第2個元素開始,刪除的元素個數(能夠爲0,爲0到結尾),
                加入元素爲"William"、"asdfasdf";

        二、用於替換數組中的元素;
            arr.splice(2,1,"William");          

        三、用於刪除數組中的元素;
             arr.splice(2,2);

(7)、arr.indexOf(element);
        查找,在數組中查找element,返回值爲索引,若是沒有該元素返回-1;

(8)、arr.sort(function);
        排序,function爲一個函數;
            eg:
                function sortNumber(a,b){
                    return a-b;
                }
                arr.sort(sortNumber);(從小到大排序)

    tips:若是a-b改爲b-a,那麼執行的操做爲從大到小;
    tips:字符串對象(String)的方法與Array的方法相似;

1八、(Date)日期對象

date.getTime()
date.getMilliseconds()
date.getSeconds()
date.getMinutes()
date.getHours()
date.getDay()
date.getDate()
date.getMonth()
date.getFullYear()

tips:不少,查文檔

1九、(String)對象

charAt(index)
str[index]          獲取字符串指定位置的字符

concat()        拼接字符串
---------------------------
slice(start,end)/
substring(start,end)    截取從start開始,end結束的字符,
                返回一個新的字符串,若start爲負數,那麼從最後一個字符開始;

substr(start,length)    截取從start開始,length長度的字符,獲得一個新的的字符串
---------------------------

indexOf(char)       獲取指定字符第一次在字符串中的位置
lastIndexOf(char)   獲取指定字符最後一次出如今字符串中的位置

trim()      去除字符串先後的空白
---------------------------
toUpperCase()
toLocaleUpperCase()     轉換爲大寫

toLowerCase()
toLocaleLowerCawse()    轉換爲小寫
---------------------------

replace()       替換字符
split()         分割字符串爲數組

20、自定義對象

對象:無序屬性的集合;
    特徵:屬性(key);
    行爲:方法(value);

js是基於對象的弱類型語言;

繼承:基於類,子類能夠從父類獲得的特徵;    

工廠模式:定義一個function構造函數,做爲對象,要建立對象直接調用該構造函數,加new關鍵字;

構造函數:定義對象的函數,裏面存有該對象擁有的基本屬性和方法;
    命名首字母大寫,this會自動指代當前對象;

訪問對象屬性:
    obj[key];
    obj.key;

遍歷對象:
    for(key in obj){
        key         爲屬性名;
        obj[key]    爲屬性值(value);
    }

2一、JSON

{
   "name" : "李狗蛋",
   "age" : 18,
   "color" : "yellow"
}

一、  全部的屬性名,必須使用雙引號包起來;
二、  字面量側重的描述對象,JSON側重於數據傳輸;
三、  JSON不支持undefined;
四、  JSON不是對象,從服務器發來的json通常是字符串,
經過JSON.parse(jsonDate.json)能夠將其轉換成js對象;

2二、JS解析

(1)、做用域
全局做用域:整個代碼全部地方均可以調用;
局部做用域:在函數內部聲明的變量,只能夠在函數內部使用;

(2)、變量提高和函數提高
預解析:在解析的時候,var和function都會被提高到代碼的最頂端;
    可是賦值操做不會被提高,定義和函數纔會被提高;
    if裏面的變量定義也會被提高,可是賦值操做不會;

2三、其餘細節(tips)

(1)、元素由對象組成的數組進行排序
    eg:
        var data = [
            {title: "老司機", count: 20},
            {title: "詩人", count: 5},
            {title: "歌手", count: 10},
            {title: "隔壁老王", count: 30},
            {title: "水手", count: 7},
            {title: "葫蘆娃", count: 6},
        ];
            //該數組的元素都爲對象。咱們需求爲根據count的值給數組從新排序。
            //解決方案:使用sort方法,對傳入的函數作手腳。

        function sortArr(a,b){
            return a.count > b.count;   
        }
        data.sort(sortArr);

            //本來的a和b的比較方法變成a.count和b.count;
            //本來的比較方法能夠參見17,數組對象
            //至此,data將以count值從小到大排列。

    tips:Array對象的sort方法傳入的爲比較函數,比較函數裏return排序比較的方法;
        原始的sort方法傳入的函數內部return的值爲a>b,
        經過修改sort傳入的函數,能夠實現對元素爲對象的數組的排序!
相關文章
相關標籤/搜索