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

相关推荐

不愿透露姓名的神秘牛友
昨天 11:30
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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