猿问

js关于let使用的问题

let x = 1;
function foo( y = function() { x = 2; }) {  
var x;
    y();
}
foo();

这个函数执行到y的时候x会自动等于1
let x = 1;
function foo( y = function() { x = 2; }) {  
let x;
    y();
}
foo();

这块执行到y的时候x则是undefined

问题一:

为什么两次函数中的初始化x值不一样?这是var复用的上级let吗?

问题二:
这俩函数执行后最后结果都是2,为什么函数内的let修改会影响上级?请大神详细解释一下,这块看了半天没懂


MM们
浏览 752回答 2
2回答

慕盖茨4494581

确定第一个执行到y的时候x的值是1?在执行y之前log一下看到的是undefined啊?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答