日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js词法分析

發(fā)布時間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js词法分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
javascript詞法分析 函數(shù)在運行的瞬間,生成一個活動對象(Active Object),簡稱AO; 具體分為兩個階段: 一.分析階段 JavaScript代碼運行前有一個類似編譯的過程即詞法分析,詞法分析主要有三個步驟: 1.分析參數(shù) 2.分析變量聲明 3.分析函數(shù)聲明 二.執(zhí)行階段 (即做賦值等操作) 具體例子及簡單分析步驟如下: *1.無參數(shù)情況* 1 function func() { 2 console.log(age); 3 var age = 25; 4 console.log(age); 5 function age() { 6 } 7 console.log(age); 8 } 9 func(); 1.1詳細分析步驟 // 分析階段 形成活動對象AO, 假設 AO = {}; 1)分析參數(shù) a.分析形參(沒有跳過) b.分析實參(沒有跳過) 2)分析變量聲明 a. AO.age = undefined;(在函數(shù)分析階段默認往AO活動對象添加屬性值為undefined); 3) 分析函數(shù)聲明 a. AO.age = function(){};(如果AO中已存在age屬性直接做覆蓋操作,如果不存在則新建age屬性進AO) // 執(zhí)行階段 1.打印 function() {}; 2.age賦值25 AO.age = 25; 3.打印 25; 4.打印 25; **//以下例子同上類似步驟簡寫分析** *2.有參數(shù)情況* 1 function func(age) { 2 console.log(age); 3 var age = 25; 4 console.log(age); 5 function age() { 6 } 7 console.log(age); 8 } 9 func(18); 2.1 // 分析階段 1)分析參數(shù) a. AO.age = undefined; b. AO.age = 18; 2)分析變量聲明 AO.age = 18; (AO中已存在age屬性) 3.分析函數(shù)聲明 AO.age = function() {}; //執(zhí)行階段 1.打印 function() {}; 2.賦值后打印 AO.age = 25; 3.打印 25; *3.報錯情況* 1 function func(age) { 2 var age; 3 console.log(age); 4 var age = 25; 5 console.log(age); 6 function age() { 7 console.log(age); 8 } 9 age(); 10 console.log(age); 11 12 } 13 func(18); 3.1 // 分析階段 1.分析參數(shù) a. AO.age = undefined; b. AO.age = 18; 2.分析變量聲明 AO.age = 18;(AO中已存在,保持不變); 3.分析函數(shù)聲明 AO.age = function() {}; (存在age屬性覆蓋) //執(zhí)行階段 1.打印 function() {}; 2.賦值后打印 25; 3. age is not a function;(執(zhí)行函數(shù)時AO的age已經(jīng)為25) 4. 報錯不執(zhí)行; *4.變量提升情況* 1 var name = "test"; 2 function t() { 3 console.log(name); 4 var name = "test1"; 5 console.log(name); 6 } 7 t(); 類似寫法 var name = "test"; function t() { var name; console.log(name); name = "test1"; console.log(name); } t();

4.1

// 分析階段 1.分析參數(shù)(沒有參數(shù)跳過) 2.分析變量聲明 AO.name = undefined; 3.分析函數(shù)聲明(沒有跳過) //執(zhí)行階段 1.打印 undefined; 2.賦值后打印 test1; 注: 1.函數(shù)聲明在分析階段操作 2.函數(shù)表達式在執(zhí)行階段操作

轉(zhuǎn)載于:https://www.cnblogs.com/jiaqi1719/p/10019689.html

總結(jié)

以上是生活随笔為你收集整理的js词法分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。