这两种声明方法的区别是什么

// 函数声明语句{  let a = 'secret';  function f() {    return a;
  }
}// 函数表达式{  let a = 'secret';  let f = function () {    return a;
  };
}


哈士奇WWW
浏览 483回答 1
1回答

尚方宝剑之说

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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript