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

歡迎訪問 生活随笔!

生活随笔

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

javascript

学习笔记=《你不知道的JavaScript(上卷)》第三章:函数作用域和块级作用域...

發布時間:2023/12/20 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记=《你不知道的JavaScript(上卷)》第三章:函数作用域和块级作用域... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3.1 函數中的作用域

  (1)JavaScript具有基于函數的作用域,每聲明一個函數的時候會為其自身創建一個‘氣泡’,這個氣泡內聲明的變量或函數外界無法訪問。

函數作用域的含義是指,屬于這個函數的全部變量都可以在整個函數范圍內使用及復用(事實上在嵌套的作用域中也可以使用)。

?

?

3.2 隱藏內部實現

  例子:

var a = 666;function sum(b){return a + b; }function test(){var b = sum(5) + 10;
  console.log(b); }

  這個例子中變量a和方法sum實際上只會在方法test中使用,依照最小特權原則

最小特權原則也稱為最小授權原則和最小暴露原則,這個原則是指在軟件設計中,應該最小限度的暴露必要的內容,將不必暴露的內容隱藏起來。

  以上實例應該改為:

function test(){var a = 666;function sum(b){return a + b;}var b = sum(5) + 10;console.log(b); }

?

?

3.3 函數作用域

  將任意代碼添加添加包裝函數,可以將其中的變量和函數隱藏起來,外部作用域無法訪問包裝函數里面的變量和函數。

var a = 2;function foo(){var a = 3;console.log(a); //3 }foo();console.log(a); //2

  但是還有點不好的地方,實際上還是創建了一個外部的foo函數,它本身就污染了所在作用域,

  且需要在后面調用執行。這個時候可以使用IIFE(自執行),改為:

var a = 2;;(function(){var a = 3;console.log(a); //3 })();console.log(a); //2

?

?

?

3.4 塊作用域

  JavaScript中實現塊作用域有以下幾種方式:

    with:用with從對象中創建出來的作用域僅在with聲明中有效,外部無效。

    try/catch:ES3規范中規定,try/catch的catch語句會創建一個塊級作用域,其中聲明的變量只在catch語句中有效。

    let:let可以將變量綁定到所在的任意作用域中,也就是說,let聲明的變量,隱式的綁定在本身所在的作用域中。

? ? ? ? ? ? ? const:聲明一個不可修改的變量

//便于可讀,我們可以顯示的為塊作用域添加塊var a = true;if(a){{ //顯示的創建塊let b = 666;console.log(b);} }

?

?

  總結:JavaScript是基于函數作用域的,每次聲明一個函數,函數中包含的變量和函數外部作用域無法訪問。我們可以通過包裝函數將不必要對外暴露的變量或函數包裝隱藏起來。也可以通過IIFE(自執行函數)來隱藏變量和函數。js中的塊級作用域實現方式有with(不要使用),try/cath的cath語句,let,const等。

?

轉載于:https://www.cnblogs.com/huangzhenghaoBKY/p/9798542.html

總結

以上是生活随笔為你收集整理的学习笔记=《你不知道的JavaScript(上卷)》第三章:函数作用域和块级作用域...的全部內容,希望文章能夠幫你解決所遇到的問題。

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