电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JavaScript ECMA-262-3 深入解析(一):執行上下文實例分析

瀏覽:4日期:2023-11-02 10:01:59

本文實例講述了JavaScript ECMA執行上下文。分享給大家供大家參考,具體如下:

介紹

這篇文章我們主要探討ECMAScript執行上下文和相關的ECMAScript可執行代碼。

定義

每次當控制器轉到ECMAScript可執行代碼的時候,即會進入到一個執行上下文。

執行上下文(簡稱-EC)是一個抽象概念,ECMA-262標準用這個概念同可執行代碼(executable code)概念進行區分。

標準規范沒有從技術實現的角度準確定義EC的類型和結構;這應該是具體實現ECMAScript引擎時要考慮的問題。

活動的執行上下文在邏輯上組成一個堆棧。堆棧底部永遠都是全局上下文(global context),堆棧頂部是當前(活動的)執行上下文。堆棧在EC類型的變量(various kingds of EC)被推入或彈出的同時被修改。

可執行代碼

可執行代碼的概念與抽象的執行上下文的概念是相對的。在某些時刻,可執行代碼與執行上下文是等價的。

例如,我們可以定義一個數組來模擬執行上下文堆棧:

ECStack = [];

每次進入函數 (即使函數被遞歸調用或作為構造函數) 的時候或者內置的eval函數工作的時候,這個堆棧都會被推入。

全局代碼

這種類型的代碼是在'程序'級處理的:例如加載外部的js文件或者本地的在<script></script>標簽內的代碼。全局代碼不包括任何函數體內的代碼。

在初始化(程序啟動)階段,ECStack是這樣的:

ECStack = [ globalContext];函數代碼

當進入函數代碼(所有類型的函數),ECStack被推入新元素。要注意的是,具體的函數代碼不包括內部函數(inner functions)代碼。如下所示,我們使函數自己調自己的方式遞歸一次:

(function foo(bar) { if (bar) { return; } foo(true);})();

那么,ECStack以如下方式被改變:

// first activation of fooECStack = [ <foo> functionContext globalContext]; // recursive activation of fooECStack = [ <foo> functionContext ? recursively <foo> functionContext globalContext];

每次返回存在的當前執行上下文和ECStack彈出相應的執行上下文的時候,棧指針會自動移動位置,這是一個典型的堆棧實現方式。一個被拋出但是沒有被截獲的異常,同樣存在一個或多個執行上下文。當相關段代碼執行完以后,直到整個應用程序結束,ECStack都只包括全局上下文(global context)。

Eval 代碼

eval 代碼有點兒意思。它有一個概念: 調用上下文(calling context), 這是一個當eval函數被調用的時候產生的上下文。eval(變量或函數聲明)活動會影響調用上下文(calling context)。

eval(’var x = 10’); (function foo() { eval(’var y = 20’);})(); alert(x); // 10alert(y); // 'y' is not defined

ECStack的變化過程:

ECStack = [ globalContext]; // eval(’var x = 10’);ECStack.push( evalContext, callingContext: globalContext); // eval exited contextECStack.pop(); // foo funciton callECStack.push(<foo> functionContext); // eval(’var y = 20’);ECStack.push( evalContext, callingContext: <foo> functionContext); // return from evalECStack.pop(); // return from fooECStack.pop();

看到了吧,這是一個非常普通的邏輯調用堆棧

在版本號1.7以上的SpiderMonkey(內置于Firefox,Thunderbird)的實現中,可以把調用上下文作為第二個參數傳遞給eval。那么,如果這個上下文存在,就有可能影響“私有”(類似以private關鍵字命名的變量一樣)變量。

function foo() { var x = 1; return function () { alert(x); };}; var bar = foo(); bar(); // 1 eval(’x = 2’, bar); // pass context, influence on internal var 'x' bar(); // 2結論

這篇文章的內容是未來分析其他跟執行上下文相關的主題(例如變量對象,作用域鏈,等等)的最起碼的理論基礎,這些主題將在后續章節中講到。

其他參考

這篇文章的內容在ECMA-262-3 標準規范中對應的章節.

英文地址 : ECMA-262-3 in detail. Chapter 1. Execution Contexts

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 999范文网_优质范文下载写作帮手 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 考试试题_试卷及答案_诗词单词成语 - 优易学| 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 双菱电缆-广州电缆厂_广州电缆厂有限公司| 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 派财经_聚焦数字经济内容服务平台 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 |