JS 上下文环境

想问一下
var b;
void function()
{
var env={b:1};
b=2;
console.log("in function b",b);
with(env)
{
var b=3;
console.log("in with b",b);
}
}();
console.log("Global b",b)
为什么这种情况下 Global b 为undefine
var b;
void function()
{
var env={b:1};
b=2;
console.log("in function b",b);
with(env)
{
b=3;
console.log("in with b",b);
}
}();
console.log("Global b",b)
这种情况 Global b 为2
他们的区别就是with里面的b有没有var 有没有人可以帮忙解答一下


#前端##面试题目##秋招#
全部评论
with是啥阿
点赞 回复 分享
发布于 2020-09-25 14:45
var是没有块级作用域的,所以第一个的会在编译阶段在函数作用域中声明b,所以那个b=2被赋给了函数里的b,而第二个因为函数里没b,所以就赋给了最外层的全局的b
点赞 回复 分享
发布于 2020-09-25 15:43

相关推荐

lxylxy_:其实是美团卷起来了
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务