国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

JS作用域與作用域鏈詳解

2024-04-27 15:06:56
字體:
來源:轉載
供稿:網友

變量必須先聲明后使用,js中函數可以先使用后聲明是因為函數有預加載過程!

作用域鏈

內部環境可以訪問外部環境的變量,反之不然 環境:每個函數內部都是一個環境,最外邊是全局環境。 兩種類型:函數環境、全局環境

變量的作用域是聲明時決定的,而不是運行時

<script>var ip="127";function f1(){ console.log("ip地址:"+ip);}function f2(){ var ip="192"; f1();}f2(); //ip地址:127</script><script>//再寫一個分析function n1(){ var ip="127"; console.log("ip地址:"+ip);}function n2(){ var ip="192"; n1();}n2(); //ip地址:127</script>

訪問是系統唯一變量, 調用時取決于變量的當時信息

<script>var ip="127";function s1(){ console.log("ip地址:"+ip);}s1(); //ip地址:127var ip="192";s1(); //ip地址:192</script>

AO活動對象

AO: Active Object 活動對象(抽象的)

執行環境: js代碼執行是有環境的(全局環境、函數內部環境) 環境定義了其有權訪問的其他數據 環境有一個與之關聯的“活動對象AO” 環境中所有的變量和函數都是活動對象AO的成員 全局環境是最外圍的執行環境,活動對象是window對象 執行環境中的代碼執行完畢后就被銷毀

圖解: AO活動對象 每個環境都通過AO定義了其權訪問的一些數據。

<script> var weather = "rain"; var week = "Thurday"; var date = "0910"; console.log("now:"+window.weather); function f1(){ console.log("f1:"+weather); function f2(){ var weather = "snow"; var subject = "php language"; console.log("f2:"+weather); function f3(){ var week = "Sunday"; console.log("f3:"+weather+"--星期:"+week+'--日期:'+date+'--科目:'+subject); } f3(); } f2(); } window.f1();/*now:rainf1:rainf2:snowf3:snow--星期:Sunday--日期:0910--科目:php language*/</script>

以上程序代碼分析 在f3最里邊環境獲得一個變量信息: 首先在本環境獲得,如果沒有 其次像外部環境獲得 其次再像外部環境獲得 ….. 直到找到全局環境為止 通過以上分析,變量尋找看似一個“動態過程”,實際其是一個”固態過程” 每個環境都有AO活動對象 每個環境可以訪問的信息早早地已經“固化”為AO的成員信息

變量的類型及訪問優先順序

四種類型:內部變量>>>內部函數>>>形參>>>外部變量(變量/函數/形參) 同名的變量和函數同時存在,”變量”會”覆蓋”函數

<script>var yuyan = "php"; //①外部變量function f1(){ function f2(yuyan){ //②形參 var yuyan = "html"; //④內部變量 console.log('語言:'+yuyan); function yuyan(){ //③內部函數 console.log('very good'); } } f2('java');}f1(); //語言:html</script>

全局和局部變量

全局變量 聲明: ① 在函數外部聲明的變量 ② 在函數內部不使用var聲明的變量(前提是函數執行之后才起作用)

全局變量 是活動對象window的成員信息。 在訪問的時候,window是否設置都可以,如果設置window可以提高代碼可讀性

局部變量 聲明: 在函數內部通過var聲明的變量就是局部變量。

局部變量 相對概念上,在一定范圍內可以看做是“全局變量”。 其在 本環境、內部環境、內部深層環境 都可以被訪問。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 纳雍县| 秦安县| 丰原市| 拉孜县| 宁河县| 保康县| 育儿| 泰来县| 湛江市| 若羌县| 峨边| 梅州市| 邵武市| 岐山县| 永福县| 徐州市| 南京市| 武定县| 内乡县| 乌恰县| 安泽县| 慈溪市| 莱阳市| 新田县| 邓州市| 襄樊市| 阜阳市| 无为县| 眉山市| 叶城县| 嘉祥县| 醴陵市| 容城县| 察雅县| 桂阳县| 札达县| 普洱| 西藏| 宽城| 蓬溪县| 松滋市|