Javascript,if的一次bug?还是我不清楚的?

 RorinL     2022年09月24日 星期六 14:41:27     JavaScript      JavaScript   js   块级作用域    
var sd = false;
if(true){
    sd = false;
    console.log("if",sd)
}{
    sd = true;
    console.log("no else",sd)
}
console.log(sd);
//
if false
VM1028:7 no else true
VM1028:9 true

发现这并不会报错,这是我没想到的;但是仔细想,if(){}也不是一定要跟else吧是不是;所以要看下{}直接写出来为什么不会有影响呢?

var sd = false;
undefined
console.log(sd);
{sd=123;let aa = 222;console.log(sd,aa)}
console.log(sd,aa);
VM376:1 false
VM376:2 123 222
VM376:3 Uncaught ReferenceError: aa is not defined
    at :3:16

这可以看到,使用{}时候,{}中的变量范围可以向上查找;但{}里声明的变量在外部是访问不了的; aa在{}里面定义声明,但是{}外面是无法访问的; 说白了{}他就是一个块级作用域


暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

CAPTCHAis initialing...