// 函数声明语句
{
let a = 'secret';
function f() {
return a;
}
}
// 函数表达式
{
let a = 'secret';
let f = function () {
return a;
};
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
ES6环境下的let变量声明在语句块中声明了一个变量a和一个函数f,其中变量a使用了let关键字,说明它是一个局部变量,作用域在其所在的语句块中,而函数f的作用域为全局的,在语句块的外面可以访问。又因为闭包的关系,函数f使用到的变量指向let a。
这个和如下代码是不同的
对于下面的代码:
在语句块中声明了变量a和函数f,在语句块的外面不能访问函数变量f
一般函数和函数表达式的区别
一个是函数声明,一个是表达式
一个是有名函数,一个是匿名函数
一个f.name属性是''(空字符串),一个是'f'
我觉得可以直接看MDN的函数表达式吧,简单来讲前者只是静态声明(不运行),后者是运行后将返回值存到变量里。