亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這兩種聲明方法的區別是什么

這兩種聲明方法的區別是什么

哈士奇WWW 2018-10-11 14:15:13
// 函數聲明語句{  let a = 'secret';  function f() {    return a;   } }// 函數表達式{  let a = 'secret';  let f = function () {    return a;   }; }
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

ES6環境下的let變量聲明

// 函數聲明語句{  let a = 'secret';  function f() {    return a;
  }
}
f();//secret

在語句塊中聲明了一個變量a和一個函數f,其中變量a使用了let關鍵字,說明它是一個局部變量,作用域在其所在的語句塊中,而函數f的作用域為全局的,在語句塊的外面可以訪問。又因為閉包的關系,函數f使用到的變量指向let a。

這個和如下代碼是不同的

{
  let a = 'secret';
}function f() {
    return a;
}f();//Uncaught ReferenceError: a

對于下面的代碼:

// 函數表達式{  let a = 'secret';  let f = function () {    return a;
  };
}
f();//Uncaught ReferenceError: f

在語句塊中聲明了變量a和函數f,在語句塊的外面不能訪問函數變量f

// 函數表達式{  let a = 'secret';  let f = function () {    return a;
  };
  f()://secret}


查看完整回答
反對 回復 2018-11-16
  • 1 回答
  • 0 關注
  • 498 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號