亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript語法理論知識點

ethernet / 3451人閱讀

摘要:方法用于刪除原數(shù)組中的一部分元素,并可以在被刪除的位置添加新數(shù)組成員,返回值是被刪除的元素。遞歸函數(shù)函數(shù)內(nèi)部調(diào)用函數(shù)自身,稱之為遞歸。在函數(shù)內(nèi)使用聲明的變量是局部變量,是人為的聲明。

前言

這個筆記不知道什么時候記下的反正很有意思,很基礎(chǔ),很理論。

JavaScript學習筆記1 第一章 JavaScript概述 1.1 什么是JavaScript

JavaScript是一種輕量級的腳本語言,也是一種嵌入式(embedded)語言,是一種對象模型語言。

腳本語言又被稱為擴建的語言,或者動態(tài)語言,是一種編程語言,用來控制軟件應(yīng)用程序,腳本通常以文本(如ASCII)保存,只在被調(diào)用時進行解釋或編譯,在依靠特定的宿主環(huán)境提供API來實現(xiàn)操作和效果。常見的宿主環(huán)境有瀏覽器,服務(wù)器環(huán)境(操作系統(tǒng))。
嵌入式語言一句話就是不能獨立做事,插入到其他語言才能用的語言。
1.2 使用方法 1.2.1 內(nèi)部引用(標簽引入)

理論上

邏輯或解析圖

2.3 流程控制

順序結(jié)構(gòu):從上而下

分支結(jié)構(gòu)(選擇結(jié)構(gòu)):if else if else 和switch。

if else 和 switch的區(qū)別?

if結(jié)構(gòu)不僅可以判斷固定值, 還可以判斷范圍區(qū)間。

switch結(jié)構(gòu)只能判斷固定值情況。

3.循環(huán)結(jié)構(gòu):while,for,do while等

4.continue和break的區(qū)別;

continue:跳出當前循環(huán),繼續(xù)下次循環(huán)。

break:跳出整個循環(huán)結(jié)構(gòu),也就相當于結(jié)束循環(huán)。

2.4 數(shù)組 2.4.1 數(shù)組的簡單使用

數(shù)組是一組有序數(shù)據(jù)的集合,在內(nèi)存中表現(xiàn)為一段連續(xù)的內(nèi)存地址。

數(shù)組的聲明也很簡單:

var arr=[1,2,3,4];

var arr=new Array(1,2,3,4);

var arr=new Array(2); arr[0]=1;arr[1]=2;arr[2]=3;

多維數(shù)組:數(shù)組的元素也是一個數(shù)組,則父數(shù)組是多為數(shù)組。

var arr=[1,2,[3,4,5,[6,7]]];是個三維數(shù)組

獲取數(shù)組元素:通過下標獲取(數(shù)組[下標]),多為數(shù)組的話所有下標都寫上,不然只的到所在行的全部元素。

數(shù)組的遍歷:

最常用的通過for循環(huán),根據(jù)循環(huán)語法,在循環(huán)之前先獲取數(shù)組長度
var arr=["Apple","Huawei","SumSung"];
var len=arr.length;
for(var i=0;i
for...in循環(huán)遍歷數(shù)組:for..in可以遍歷對象,也可以遍歷數(shù)組,畢竟數(shù)組也是個特殊的對象。
var arr=["Apple","Huawei","SumSung"];
for(var i in arr){
    //每次遍歷是,系統(tǒng)自動將元素的索引下標放入變量i中
    console.log(arr[i]);
}
2.4.2 數(shù)組對象的屬性及方法(很重要,背下來)
length屬性:返回數(shù)組的成員數(shù)量即數(shù)組的長度。

數(shù)組對象的常用方法:

push方法:用于在數(shù)組的末端添加一個或多個元素,并返回新元素的數(shù)組長度。注意push方法會改變原數(shù)組。

var a=[];
a.push(1);
alert(a);//1
a.push("a");
console.log(a);//Array[1,"a"]
a.push(true,{});
console.log(a);//Array [ 1, "a", true, {} ]

pop方法:用于刪除數(shù)組的最好一個元素,并返回該元素。注意,pop方法會改變原數(shù)組

var a=["a","b","c"];
var b=a.pop();//c
console.log(a);//Array["a","b"]
console.log(b);//c

join方法:用于參數(shù)分隔符,將所有數(shù)組成員一個字符串返回,如果不提供參數(shù),默認用逗號分隔。不改變原數(shù)組。

var a=[1,2,3,4];
var b=a.join("|");
console.log(b);//1|2|3|4
var c=a.join();
console.log(c);

concat方法:用于多個數(shù)組的合并,它將新數(shù)組的成員添加到原數(shù)組的尾部,然后返回一個新的數(shù)組,原數(shù)組不變。

var a=["hello"];
var b=["world"];
var d=a.concat(b);
console.log(d);//Array [ "hello", "world" ]
console.log(d.concat(["!"],["A"]));//Array [ "hello", "world", "!", "A" ]

shift方法:用于刪除數(shù)組的第一元素,并返回給該元素。注意改變原數(shù)組。

var a=[1,2,3];
var b=a.shift();
console.log(a);//Array [ 2, 3 ]
console.log(b);//1

unshift方法:用于在數(shù)組的第一個位置添加一個元素,并返回新加元素后的數(shù)組長度。注意該方法會改變原數(shù)組。

var a=[1,2,3];
var b=a.unshift(5);
console.log(a);//Array [ 5, 1, 2, 3 ]
console.log(b);//4

reverse方法:用于顛倒數(shù)組中的元素,返回改變后的數(shù)組。注意,該方法將改變原數(shù)組。

var a=[1,2,3];
var b=a.reverse();
console.log(a);//Array [ 3,2,1 ]
console.log(b);//Array [ 3,2,1 ]

slice方法:用于提取原數(shù)組中的一部分元素(相當于截?。?返回一個新數(shù)組,原數(shù)組不變。它的第一個參數(shù)為起始位置(從0開始) , 第二個參數(shù)為終止位置(但該位置的元素本身不包括在內(nèi)) 。如果省略第二個參數(shù), 則一直返回到原數(shù)組的最后一個成員。

var a = ["a","b","c","d","e"];
console.log(a.slice(0)) // ["a", "b", "c", "d", "e"]
console.log(a.slice(1)) // ["b", "c", "d", "e"]
console.log(a.slice(1,3)); // ["b", "c"]

splice方法:用于刪除原數(shù)組中的一部分元素,并可以在被刪除的位置添加新數(shù)組成員,返回值是被刪除的元素。注意,該方法會改變原數(shù)組。splice的第一個參數(shù)是刪除的起始位置, 第二個參數(shù)是被刪除的元素個數(shù)

var a = ["a", "b", "c", "d", "e", "f"];
var a1 =  a.splice(4, 2);
console.log(a1); //Array["e", "f"]
console.log(a); // Array["a", "b", "c", "d"]

var b = ["a", "b", "c", "d", "e", "f"];
var a2 = b.splice(1, 2, 1, 2);
console.log(a2); //["b", "c"]
// console.log(b);//["a", 1, 2, "d", "e", "f"]

forEach方法:用于遍歷數(shù)組的所有成員,執(zhí)行某種操作;forEach方法的參數(shù)是一個函數(shù),數(shù)組的所有成員會依次執(zhí)行該函數(shù),它接受三個參數(shù),分別是當前位置的值,當前位置的編號和整個數(shù)組

var a = ["a", "b", "c", "d", "e", "f"];
a.forEach(function(v,k,h){
    console.log(v);
    console.log(k);
    console.log(h);
});
//第三個參數(shù)可以寫可以不寫,它帶便遍歷次數(shù)
第三章 函數(shù) 3.1 函數(shù)概述

函數(shù)就是制作工具的工具,比如計算器就是一個工具,而制作計算器的工具就是函數(shù),也就是制作工具的工具。一次定義多次使用。

用函數(shù)的好處:節(jié)省代碼的數(shù)量,減少代碼量,使代碼可以重復(fù)使用,節(jié)省空間,節(jié)省時間,使程序代碼具有結(jié)構(gòu)化,模塊化,后期維護更友好等等很多好處

3.2 函數(shù)基本使用 3.2.1 函數(shù)的聲明及調(diào)用

多次聲明同一個函數(shù)的話,最后一次聲明的函數(shù)會覆蓋前面的函數(shù),前面的聲明在任何時候都是無效的。

遞歸函數(shù):函數(shù)內(nèi)部調(diào)用函數(shù)自身,稱之為遞歸。只要是遞歸必須的有判斷,不然它是個死循環(huán),用別的函數(shù)解決的問題最好別用遞歸解決,遞歸占內(nèi)存大,不友好。

function Recursion(x){
    if(x>1){
        return x+Recursion(x-1);
    }else{
        return 1;
    }
}
console.log(Recursion(100);
3.2.2 函數(shù)的參數(shù)及返回值

函數(shù)的參數(shù)有形參和實參:

形參就是函數(shù)聲明時需要接受的參數(shù),可以理解成暫時的占位符,并無實際意義

實參就是調(diào)用函數(shù)是傳遞進函數(shù)的具體的實際數(shù)據(jù),也就是給占替代位符的的值

函數(shù)體內(nèi)部的return語句:表示將數(shù)據(jù)返回給調(diào)用者。return后面即使有語句,也不會執(zhí)行,也就是return后面不執(zhí)行.return語句可有可無,沒有則不反悔任何值或者說返回undefined。

函數(shù)中的arguments對象:arguement是函數(shù)調(diào)用時的實參列表;只是實參列表

function Argu(a){
    console.log(arguments);
}
Argu(1,2,3);

aruguments對象帶有一個callee屬性,返回他所對應(yīng)的原函數(shù)。callee代表當前運行的函數(shù)

function Argu(a){
    console.log(arguments.callee);
}
Argu(1,2,3);
3.2.3 自調(diào)用匿名函數(shù)

函數(shù)可以沒有名字嗎?當然可以:(function(){})();

為什么要有自調(diào)用匿名函數(shù)?

 因為有名函數(shù)有缺點,可能運行時會出現(xiàn)命名沖突,如果在編寫程序時,直接采取自調(diào)用匿名函數(shù),則不會產(chǎn)生命名沖突問題。市場上很多框架,如JQuery.js,ext.js等都是采用匿名函數(shù)進行封裝。

使用自調(diào)用匿名函數(shù)結(jié)合aruguments對象實現(xiàn)遞歸:

var a = (function (n) {
            if (n > 1) {
                return n + arguments.callee(n - 1);
            } else {
                return 1;
            }
        })(100);
console.log(a);
3.3 函數(shù)作用域 3.3.1 定義

作用域指的是變量存在的范圍。JavaScript中作用域有兩種局部作用域和全局作用域。

局部作用域:變量只在函數(shù)的內(nèi)部存在。在函數(shù)內(nèi)使用var聲明的變量是局部變量,是人為的聲明。

全局作用域:變量在整個程序中存在,所有地方都可以讀取。全局變量一個是函數(shù)外聲明的變量;還有一個是函數(shù)內(nèi)不使用var的變量(僅僅帶便變量被賦值),也就是如果不是人為定義,系統(tǒng)會定義,系統(tǒng)定義的變量在整個程序中存在,不加var會污染全局。

function a(){
    b=1
}
a();
console.log(b);

局部變量會替代全局變量:函數(shù)內(nèi)部聲明的變量會在函數(shù)內(nèi)部區(qū)域覆蓋同名的全局變量。

 這說明javascript的函數(shù)在查找自身函數(shù)定義開始,從“內(nèi)”向“外”查找。
var a=3;
function fun(){
    var a=2;
    console.log(a);
}
fun();//2
console.log(a);//3
如果函數(shù)內(nèi)部不使用var關(guān)鍵字,那么函數(shù)內(nèi)部的賦值將會影響全局變量。

實際上,JavaScript默認喲偶一個全局的對象窗口,全局作用域的變量實際上是被綁定到窗口對象上的一個屬性,因此,直接訪問全局對象a和訪問window.a是完全一樣的

var a=3;
function fun(){
    a=2;
    console.log(a);
}
fun();//2
console.log(a);//2

作用域解釋圖:

3.3.2 變量提升

JavaScript的函數(shù)定義有個特點,他會先掃描整個函數(shù)體呃逆的語句,把所有聲明的變量提升到函數(shù)的頂部,注意只是把聲明提升了,并不會提升變量的賦值。

function fun(){
    console.log(a);//undefined
    var a=2;
    //JavaScript解析引擎來說相當于
    /**
    *var a;
    *var b=1+a;
    *alert(b);
    *a=2;
    **/
}
fun();
3.3.3 函數(shù)本身的作用域

函數(shù)本身也是一個值,也有自己的作用域;函數(shù)的作用域與變量一樣,就是它聲明時所作的作用域,與其運行時所在的作用域無關(guān)

函數(shù)執(zhí)行時的作用域是定義時的作用域,而不是調(diào)用時的作用域。

var a=3;
var x=function(){
    console.log(a);
}
function f(){
    var a=4;
    x();
}
f();//3

再看這個:

var x=function(){
    console.log(a);
}
function y(f){
    var a=2;
    f();
}
y(x);//ReferenceError: a is not defined
//函數(shù)執(zhí)行時的作用域是定義時的作用域,而不是調(diào)用是的,所以,這代碼運行結(jié)果是這樣。

繼續(xù)看代碼

function fun(){
    var a=2;
    function bar(){
        console.log(a);
    }
    return bar;
}
var a=4;
var f=fun();
f();//2
第四章 語法分析 4.1 JavaScript代碼的編譯以及執(zhí)行

JavaScript代碼運行,分為編譯階段和執(zhí)行階段:

編譯階段:聲明變量,聲明函數(shù)(display),語法檢查等操作,一旦出錯不會執(zhí)行下一階段,除了錯誤提示不輸出別的內(nèi)容

執(zhí)行階段:變量的賦值,函數(shù)的調(diào)用,代碼的執(zhí)行等操作,這一階段出錯的話出錯之前的內(nèi)容執(zhí)行;



4.2 script代碼段

在html中是一段獨立的代碼,這一段代碼出錯不會影響下一個代碼段的執(zhí)行;不管前面的代碼段錯誤出現(xiàn)在編譯階段還是執(zhí)行階段都不會影響下一段代碼的執(zhí)行。

為什么呢?

雖然script代碼段在一個頁面,但是script代碼并不是一起執(zhí)行,而是分開解析與執(zhí)行。

JavaScript解析引擎從上而下讀取第一個代碼段-->放入內(nèi)存-->編譯階段-->執(zhí)行階段-->下一個JavaScript代碼段-->放入內(nèi)存...等操作;

總之一句話,JavaScript解析引擎執(zhí)行完一段代碼再執(zhí)行下一段代碼,每一段代碼都是獨立的存在。因此,前一個代碼無論發(fā)生什么錯誤都不會影響下一個代碼段的執(zhí)行

看圖:

參考資料

W3school
菜鳥教程
JavaScript權(quán)威指南(第6版)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/28445.html

相關(guān)文章

  • JavaScript語法理論識點

    摘要:方法用于刪除原數(shù)組中的一部分元素,并可以在被刪除的位置添加新數(shù)組成員,返回值是被刪除的元素。遞歸函數(shù)函數(shù)內(nèi)部調(diào)用函數(shù)自身,稱之為遞歸。在函數(shù)內(nèi)使用聲明的變量是局部變量,是人為的聲明。 前言 這個筆記不知道什么時候記下的反正很有意思,很基礎(chǔ),很理論。 JavaScript學習筆記1 第一章 JavaScript概述 1.1 什么是JavaScript JavaScript是一種輕量級的腳...

    Amos 評論0 收藏0
  • 正則系列——JavaScript正則表達式基礎(chǔ)語法鞏固篇

    摘要:基礎(chǔ)語法鞏固正則表達式引擎根據(jù)正則去匹配字符的時候,是通過檢查索引的方式。妻原配就是好,可以直接使用正則表達式調(diào)用它。下面解釋一下上面這些常用的元字符查找單個字符,除了換行和行結(jié)束符。正則系列文章整理到了 上一章內(nèi)容:正則表達式實戰(zhàn)篇 知識回顧 前2章分別學習了正則表達式入門技巧,以及遇到正則需求該如何去分析問題,還有正則表達式實戰(zhàn)的一些場景解釋。 這一章內(nèi)容偏向理論,推薦你點擊開頭的...

    phodal 評論0 收藏0
  • 編譯原理實戰(zhàn)入門:用 JavaScript 寫一個簡單的四則運算編譯器(二)語法分析

    摘要:語法分析對輸入的文本按照語法規(guī)則進行分析并確定其語法結(jié)構(gòu)的一種過程,稱為語法分析。遞歸下降分析法遞歸下降分析法,也稱為自頂向下分析法。表達式代碼生成我們通常用的四則運算表達式是中綴表達式,但是對于計算機來說中綴表達式不便于計算。 四則運算的語法規(guī)則(語法規(guī)則是分層的) x* 表示 x 出現(xiàn)零次或多次 x | y 表示 x 或 y 將出現(xiàn) ( ) 圓括號,用于語言構(gòu)詞的分組 以下規(guī)則...

    hankkin 評論0 收藏0
  • 前端開發(fā)識點整理

    摘要:前言本文主要是有關(guān)前端方面知識按照目前的認知進行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認知進行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學什么,還是要 follow your heart & follow your BOSS。 初衷...

    Blackjun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<