如何解释下面的两端代码运行结果
1
a中回调b,b打印x。b为什么拿不到a中的x;
let a=fn=>{const x=1;fn();};
let b=()=>{console.log(x)};
a(b); //Uncaught ReferenceError: x is not defined
2
let a=fn=>{ x=1;fn();};
let b=()=>{console.log(x)};
x; // Uncaught ReferenceError: x is not defined
a(b); // 1
这个问题主要是箭头函数的作用域问题。
箭头函数的作用域在定义时就绑定好了。
第一题:
第二题: