日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

瀏覽器是如何解析JAVAScript的?本篇文章就來帶大家認識瀏覽器解析JavaScript的原理,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。【推薦視頻教程:JavaScript視頻教程】

瀏覽器解析JavaScript原理特點:

1、跨平臺

2、弱類型 javascript 定義的時候不需要定義數據類型,數據類型是根據變量值來確定的.

var a = 10; //數字類型

var a = true //boolean類型

( 強類型: 定義變量的時候需要定義變量的類型:例如java,C#中的int a = 10 boolean a = true,直接確定了數據類型)

3、解釋執行,逐行執行

javascript 執行過程

1、語法檢測

就是看你有沒有基本的語法錯誤,例如中文,關鍵字錯誤...

2、詞法分析(預編譯)

3、逐行執行

詞法分析

預編譯的過程(兩種情況)

1、全局(直接是script標簽中的代碼,不包括函數執行)

以下面demo為例:

console.log(a); console.log(b)

var a = 100;

console.log(a) var b = 200 var c = 300 function a(){

} function fun(){

}

執行前:

1)、 首先生成一個GO(global object)對象,看不到,但是可以模擬出來用來分析

GO = { //自帶的屬性都不寫

}

2) 、分析變量聲明,變量名為屬性名,值為undefined

GO = {

a : undefined,

b : undefined,

c : undefined

}

3)、分析函數聲明,函數名為屬性名,值為函數體,如果函數名和變量名相同,則無情覆蓋

GO = {

a : function a(){

},

b : undefined,

c : undefined,

fun : function fun(){

}

}

此時,GO就是預編譯完成的最終對象,詞法分析結束。

4)、 逐行執行,分析過(變量聲明,函數聲明)不用管了,只管賦值(變量賦值)

a賦了一次值,值改變為100

GO = {

a : 100,

b : undefined,

c : undefined,

fun : function fun(){

}

}

2局部( 函數執行的時候)

以這個demo為例:

num = 100510)

1)、預編譯的時候

GO = {

num : undefined,

fun : function

}

2)、執行過程

GO = {

num : 100,

fun : function

}

3)、函數調用,也是會生成自己的作用域(AO:active object),AO活動對象. 函數調用時候,執行前的一瞬間產生的,如果有多個函數的調用,會產生多個AO

ⅰ、函數執行前的一瞬間,生成AO活動對象

fun.AO = {

}

ⅱ、 分析參數,形參作為對象的屬性名,實參作為對象的屬性值

fun.AO = {

num : 5

}

ⅲ、分析變量聲明,變量名為屬性名,值為undefined,如果遇到AO對象上屬性同名,不去做任何改變

fun.AO = {

num : 5

}

ⅳ、分析函數聲明,函數名為屬性名,值為函數體,如果遇到AO對象上屬性同名,則無情覆蓋(在這里沒有函數聲明,跳過)

4)逐行執行


實例:

在這里我們看幾個實例:

實例1:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

<script type="text/javascript">

console.log(test); //function

function test(test){

console.log(test); //function

var test = 123;

console.log(test); //123

function test(){

}

console.log(test); //123

var test = function(){}

console.log(test); //function

}

test(10);

var test = 456;

/*1.分析變量

GO={

test:undefined

}

2.分析函數{

test:function

}

3.逐行執行

第21行函數的調用

3.1test.AO={}

3.2參數

test.AO={

test:10

}

3.3變量聲明

test.AO={

test:10

}

3.4函數的聲明

test.AO={

test:function

}

4逐行執行

*/

</script>

</body>

</html>


實例2:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

<script type="text/javascript">

function test(){

console.log(b); //undefined

if(a){ //undefined轉換成false

var b = 100;

}

c = 123;

console.log(c); //123

}

var a;

test();

a = 20;

test();

console.log(c); //123

// 1.生成GO

// GO = {

//

// }

// 2.var

// GO = {

// a : undefined

// }

// 3.函數聲明

// GO = {

// a : undefined,

// test : function

// }

// 4.逐行執行

// 4.1.1 18行,test調用,生成test.AO ={}

// 4.1.2 參數 沒有,跳過

// 4.1.3 var

// test.AO = {

// b : undefined

// }

// 4.1.4 函數聲明 沒有,跳過

// 4.1.5 結果

// test.AO = {

// b : undefined

// }

// 4.1.6 逐行執行

// 14行,改變GO

// GO = {

// a : undefined,

// test : function,

// c : 123

// }

//

// 4.2 19行 a值發生了改變

// GO = {

// a : 20,

// test : function,

// c : 123

// }

//

// 4.3 20行,test調用 生成test.AO={}

// 4.3.1 參數 沒有

// 4.3.2 變量聲明

// test.AO = {

// b : undefined

// }

// 4.3.3 函數聲明 沒有

// 4.3.4 結果

// test.AO = {

// b : undefined

// }

// 4.3.5 逐行執行

// test.AO = {

// b : 100

// }

</script>

</body>

</html>

以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以關注相關教程欄目!!!

以上就是瀏覽器是如何解析JavaScript的?解析原理介紹的詳細內容,更多請關注其它相關文章!

分享到:
標簽:JavaScript
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定