JS语法疑问:const foo = (var1, var2) => bar 是什么含义?
解读这段JavaScript代码的含义
先拆解代码的各个组成部分:
let bar;
这是用let声明了一个变量bar,但没有初始化赋值,此时bar的默认值为undefined。const foo = (var1, var2) => bar
这是定义了一个箭头函数,并把它赋值给常量foo,细节如下:const foo:声明一个不可被重新赋值的常量foo,它的取值是后面的箭头函数。(var1, var2):箭头函数的参数列表,声明该函数接受两个参数var1和var2(不过当前函数体里并没有用到这两个参数)。=> bar:箭头函数的简写语法——当函数体只有一行返回语句时,可以省略大括号和return关键字,这段代码等价于:const foo = (var1, var2) => { return bar; };
这段代码的实际作用
当前状态下,不管给foo传入什么参数,它都会返回变量bar的当前值。由于bar是let声明的可变变量,后续如果修改bar的取值,调用foo()得到的结果也会同步变化。
举个实际运行的例子:
let bar; const foo = (var1, var2) => bar; console.log(foo(1, 2)); // 输出 undefined(bar未赋值) bar = "hello world"; console.log(foo(3, 4)); // 输出 "hello world" bar = 999; console.log(foo(5, 6)); // 输出 999
额外说明
- 参数
var1和var2当前未被使用,可能是代码后续会修改函数体来用到它们,或是遗留的无用参数。 - 这个函数形成了闭包,会持续引用外部作用域的
bar变量,始终返回它的最新值。
内容的提问来源于stack exchange,提问作者Lonwabo Rarane
相关产品推荐
相关产品推荐

