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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript 之作用域-06

發布時間:2023/12/20 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript 之作用域-06 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作用域

作用域:是指變量可訪問的范圍,他規定了如何查找變量,也就是確定當前執行代碼對變量的訪問權限。

作用域有兩種工作模式:

靜態作用域 :又稱為詞法作用域,在編譯階段就可以決定變量的引用,由程序定義的位置決定,和代碼執行順序無關,用嵌套的方式解析。

動態作用域 :在程序運行時候,和代碼的執行順序決定,用動態棧動態管理。

JavaScript采用詞法作用域,也就是說函數的執行依賴于變量的作用域,這個作用域是在函數定義時決定的,而不是函數調用時決定的;

靜態作用域與動態作用域

JavaScript 采用的是詞法作用域,函數的作用域在函數編譯階段就確定了。

1 <script> 2 var a = 10; 3 function run() { 4 console.log(a);//10 5 } 6 function fo() { 7 var a = 20; 8 run(); 9 } 10 fo(); 11 </script>

執行 run函數,先從run 函數內部查找是否有局部變量 a,如果沒有,就根據代碼書寫位置,向上查找變量a,也就是a等于10,所以結果會打印 10。

假設JavaScript采用動態作用域,讓我們分析下執行過程:

執行run 函數,依然是從run 函數內部查找是否有局部變量 a。如果沒有,就從調用函數的作用域,也就是fo函數內部查找 a變量,所以結果會打印 20。

前面我們已經說了,JavaScript采用的是靜態作用域,所以這個例子的結果是 10。

全局作用域、函數作用域

ES5在詞法作用域工作模式(一種規則)下又分為全局作用域和函數作用域,沒有塊作用域(es6以后有)。

全局作用域:該作用域的變量、對象在任何地方都是可見的,變量沒有在函數內聲明或者聲明的時候沒有帶var就是全局變量,擁有全局作用域,window對象的所有屬性擁有全局作用域,在代碼任何地方都可以訪問。

在客戶端javascript 中,表示的瀏覽器窗口中window對象充當了全局對象,擁有全局作用域。

1 <script> 2 var a = 10; 3 function run() { 4 console.log(a);//10 5 } 6 function fo() { 7 var a = 20; 8 run(); 9 } 10 fo(); 11 </script> 12 <script> 13 console.log(a)//10 14 </script>

全局變量a ,在run函數以及第二個<script>代碼塊中也是可見的;

函數作用域:在函數內聲明的變量,那么在函數內及其子函數內都是可見的,在函數外是不可見的。

1 function fo(){ 2 var myName='Joel'; 3 } 4 console.log(myName)//ReferenceError: myName is not defined

塊級作用域是指在{...}內的代碼塊,每一段代碼塊都有各自的作用域,且聲明的變量在代碼塊外是不可見的 如:

1 function run(){ 2 var a=10; 3 if(true){ 4 var b=10; 5 } 6 console.log(b);//如果存在塊作用域,那么這里打印這個b是會報錯的 7 }

?

總結

單純的作用域還是好理解,javascript的作用域是靜態作用域,即應該關心代碼的位置而不是調用的位置 如:

1 <script> 2 var x=10; 3 function fn(){ 4 console.log(x); 5 } 6 function show(f){ 7 var x=20; 8 (function(){ 9 f() 10 }()); 11 } 12 show(fn);//10 13 </script>

?

轉載于:https://www.cnblogs.com/CandyManPing/p/7744514.html

總結

以上是生活随笔為你收集整理的javascript 之作用域-06的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。