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 有没有人可以帮忙解答一下


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

相关推荐

昨天 13:50
闽江学院 Java
点赞 评论 收藏
分享
06-20 21:22
已编辑
门头沟学院 Java
纯真的河老师在喝茶:答应了就跑啊,实习随便跑啊,别被pua了,md就是找个廉价劳动力,还平稳过度正式工,到时候跟你说没转正
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务