中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

龙泉市| 武川县| 清远市| 巩留县| 宜兴市| 潞城市| 大埔区| 普安县| 尉氏县| 东港市| 鲁甸县| 界首市| 垫江县| 阜城县| 海阳市| 安宁市| 万全县| 嘉荫县| 临澧县| 禄丰县| 若羌县| 固原市| 东乌| 和田市| 贵阳市| 肃宁县| 屏东县| 安岳县| 会理县| 恩施市| 普陀区| 青铜峡市| 西平县| 奉贤区| 新宾| 寻乌县| 尚志市| 仁布县| 吉安市| 龙山县| 白水县|