0

在写JavaScript或者Node.js的时候

let a = 1

// func 是一个高阶函数
func(() => {
  console.log(a) // 有时候a可以访问到, 有时候a不能访问到
})

func只是高阶函数的一个代指,其可能是形如setTimeout的函数,可能是fs.readFile之类的函数,请不要在意func函数实现。

本问题着重关注的是在回调函数中的某个变量a,在一些高阶函数中可以访问外部变量,在另一些高阶函数中不能。

这是为什么?

3个回答

0
let a = 1;
let func = () => {
    console.log(a);
};

语法错了吧~

0

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

0

你把代码贴全,func的上下文

撰写答案

SegmentFault

一起探索更多未知

下载 App