91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中閉包含義指的是什么

發布時間:2020-08-29 14:03:18 來源:億速云 閱讀:159 作者:小新 欄目:web開發

JavaScript中閉包含義指的是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

閉包是函數和聲明該函數的詞法環境的組合,當內部函數被保存到外部時,將會生成閉包而閉包會導致原有作用域鏈不釋放,造成內存泄露,但同時閉包也是非常有用的,因為它可以將某些數據與對該數據的操作進行關聯。

例:

function demo() {
  var name = '張三'; // name 是demo()創建的局部變量
  function demo1() { //demo1()是demo()中的內部函數(閉包)
    console.log(name); // 使用父函數中聲明的變量  
    }
  demo1();  
    }demo();

運行結果

JavaScript中閉包含義指的是什么

函數demo()中創建一個名為name的局部變量和一個名為demo1()的內部函數。 demo1()函數只能在demo()函數體內使用。 demo1沒有自己的局部變量。但是由于內部函數可以訪問外部函數的變量,所以demo1()可以訪問父函數demo()中聲明的變量名name。但是如果有同名變量 name 在demo1中被定義,則會使用 自己函數中定義的 name。該例子說明嵌套函數可以訪問在其外部作用域中聲明的變量。

如果上面的代碼改成這樣結果會如何?

function demo() {
  var name = '張三';
  function demo1() {
    console.log(name);
  }
  return demo1;
  }
  var newDemo = demo();
  newDemo();

運行結果

JavaScript中閉包含義指的是什么

由運行結果可知兩段代碼結果一樣,內部函數demo1()在執行之前被外部函數返回形成閉包,在這種情況下,newDemo()是運行demo時所創建的函數demo1的一個引用,所以當調用newDemo()時,變量名name仍可以傳遞給console.log(name)。

示例

function num(x) {
  return function(y) {
    return x + y;
  };}
  var num1= num(2);
  var num2 = num(3);
  console.log(num1(2));// 4
  console.log(num2(2));// 5

運行結果

JavaScript中閉包含義指的是什么

定義一個函數num(x)用于接收一個參數x并返回一個新函數,這個新函數還接收一個參數y并返回x和y之和;同時又定義了兩個新的值num1,num2都為閉包且傳值分別為2,3.

感謝各位的閱讀!看完上述內容,你們對JavaScript中閉包含義指的是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖西县| 石柱| 唐山市| 定日县| 马尔康县| 乌兰察布市| 犍为县| 上杭县| 高邮市| 亚东县| 怀远县| 沧源| 宁明县| 沁源县| 永福县| 昔阳县| 团风县| 桂林市| 闵行区| 肥西县| 安阳市| 高唐县| 文登市| 浦东新区| 上饶县| 涟水县| 根河市| 阿拉善盟| 五台县| 威宁| 潮安县| 大冶市| 潜山县| 横山县| 巫溪县| 浙江省| 鸡泽县| 昭通市| 高安市| 尉犁县| 西丰县|