在写JavaScript或者Node.js的时候
let a = 1
// func 是一个高阶函数
func(() => {
console.log(a) // 有时候a可以访问到, 有时候a不能访问到
})
func
只是高阶函数的一个代指,其可能是形如setTimeout
的函数,可能是fs.readFile
之类的函数,请不要在意func函数实现。
本问题着重关注的是在回调函数中的某个变量a,在一些高阶函数中可以访问外部变量,在另一些高阶函数中不能。
这是为什么?
在写JavaScript或者Node.js的时候
let a = 1
// func 是一个高阶函数
func(() => {
console.log(a) // 有时候a可以访问到, 有时候a不能访问到
})
func
只是高阶函数的一个代指,其可能是形如setTimeout
的函数,可能是fs.readFile
之类的函数,请不要在意func函数实现。
本问题着重关注的是在回调函数中的某个变量a,在一些高阶函数中可以访问外部变量,在另一些高阶函数中不能。
这是为什么?
func函数简单贴出来吧
(function () {
"use strict";
let a = 1;
setTimeout(() => {
console.log(a);
},100);
}())
let是块级的,在全局里let a = 1;你可以打印window.a是找不到的,setTimeout调用回调,内部找不到,向父级寻找也是找不到的。
报错-
Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
语法错了吧~