js基本語法彙總

来源:http://www.cnblogs.com/wzhiq896/archive/2017/04/28/6783296.html
-Advertisement-
Play Games

註意 轉載須保留原文鏈接(http://www.cnblogs.com/wzhiq896/p/6783296.html ) 作者:wangwen896 整理 1、分類 2、註釋方式 3、簡單指令 4、變數命名 5、NaN和isNaN 6、轉義字元 7、邏輯短路、邏輯中斷 8、優先順序 9、類型轉換(t ...


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

1、分類

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

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

2、註釋方式

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

3、簡單指令

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

4、變數命名

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

5、NaN和isNaN

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

6、轉義字元

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

7、邏輯短路、邏輯中斷

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

8、優先順序

    * / %
    +   -
    &&
    ||
    ?
tips:自上而下優先順序越來越高

9、類型轉換(type)

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

data.toString();
String(data);

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

10、三元表達式

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

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

11、數組Array

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

12、形參和實參

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

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

13、函數function

(1)、函數命名
    1、  可以使用字元、數字、下劃線、$;
    2、  不能以數字開頭;
    3、  不能使用關鍵字和保留字;
    4、  區分大小寫;

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

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

1、  在函數內部沒有顯示的寫有return的時候,函數的返回值是undefined;
2、  當函數內部有return,但是return後面沒有跟著任何內容或者數據的時候,
函數的返回值是undefined,並且return後面的代碼不會執行;
3、  當return後面跟著內容或者數據的時候,函數的返回值就是這個跟著的內容或者數據;


(3)、函數的四種形式:
    1、沒有參數,沒有return;
            通常在於封裝一段過程;
    2、沒有參數,有return;
            通常用於內部封裝引用其他函數(閉包,回調);
    3、有參數,沒有return;
            通常用於執行操作的封裝;
    4、有參數,有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),否則該函數被調用後就是死迴圈;

14、數據類型

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

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

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

    tips:用typeof可以進行判斷數據類型;

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

15、內置對象

Array、Date、Math、String;

16、(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);    得到一個數字的絕對值

17、(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
        1、用於向數組中指定的索引添加元素;
            arr.splice(2, 0, "William","asdfasdf");
                在第2個元素開始,刪除的元素個數(可以為0,為0到結尾),
                加入元素為"William"、"asdfasdf";

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

        3、用於刪除數組中的元素;
             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的方法類似;

18、(Date)日期對象

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

tips:很多,查文檔

19、(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);
    }

21、JSON

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

1、  所有的屬性名,必須使用雙引號包起來;
2、  字面量側重的描述對象,JSON側重於數據傳輸;
3、  JSON不支持undefined;
4、  JSON不是對象,從伺服器發來的json一般是字元串,
通過JSON.parse(jsonDate.json)可以將其轉換成js對象;

22、JS解析

(1)、作用域
全局作用域:整個代碼所有地方都可以調用;
局部作用域:在函數內部聲明的變數,只可以在函數內部使用;

(2)、變數提升和函數提升
預解析:在解析的時候,var和function都會被提升到代碼的最頂端;
    但是賦值操作不會被提升,定義和函數才會被提升;
    if裡面的變數定義也會被提升,但是賦值操作不會;

23、其他細節(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傳入的函數,可以實現對元素為對象的數組的排序!

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 前言 2. 所謂習慣認知 3. 開門見山的萬金油 第1條:抽象類設計註重對象性,介面設計註重服務性 第2條:更近的抽象類,更遠的介面 第3條:子類間有關係時考慮用抽象類,沒有關係時一定要用介面 第4條:版本迭代中優先考慮使用抽象類而不是介面 4. 設計是個性的妥協 5. 參考資料 1. 前言 ...
  • 程式優化是用於消除程式中大量的if else這種判斷語句 ...
  • 歷時兩個多月的時間,終於把effective c++又複習了一遍,比較慢,看的是英文版,之前看的時候做過一些筆記,但不夠詳細,這次筆者是從頭到尾的翻譯了一遍,加了一些標題,先記錄到word裡面,然後發佈到博客園上。這麼做是為了方便查閱,複習C++,同時練習英文,希望這些帖子也能夠對大家有所幫助。 有 ...
  • 什麼是觀察者模式 舉個例子來簡單說明下這個模式:假如現在你在一家報社訂閱了報紙,每當有新的期刊,那麼他們就會把報紙送到你家,如果你什麼時候不想看這一期刊的時候,你就可以取消訂閱,那麼這時候他們就不會將報紙送到你家了。這其實就是利用了觀察者模式,先給出兩個基本概念:主題,就相當於被觀察的對象,這裡指的 ...
  • 每天一個設計模式 -9 裝飾者模式 一、現實 使用繼承不總能夠實現最有彈性和最好維護的設計。 利用組合和委托可以在運行時具有繼承行為的效果。 利用繼承設計子類的行為,是在編譯時靜態決定的,而且所有的子類都會繼承到相同的行為。 利用組合的做法擴展對象的行為,就可以在運行時動態地進行擴展。 二、認識裝飾 ...
  • 一、 基本概述 問題:假設有一個控制器,該控制器上有7個可編程的插槽,每個都可以指定到一個不同的家電裝置,每個插槽都有對應的開關按鈕。這個遙控器還具備一個整體的撤銷按鈕。廠家已經提供了控制家電基本處理類。希望你能夠創建一組控制遙控器的API,讓每個插槽都能夠控制一個或一組裝置。(如下圖,廠商類) 分 ...
  • java 企業網站源碼 前後臺都有 靜態模版引擎, 代碼生成器大大提高開發效率 前臺: 支持兩套模版, 可以在後臺切換 系統介紹: 1.網站後臺採用主流的 SSM 框架 jsp JSTL,網站後臺採用freemaker靜態化模版引擎生成html 2.因為是生成的html,所以訪問速度快,輕便,對服務 ...
  • 1..net ajax顯示後臺返回值 <script> $(document).ready(function () { $("#btn").click(function () { //var data = new string(); $.ajax({ type: "POST", //要用post方式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...