Javascript 何时使用let,何时仍应使用var

Javascript 何时使用let,何时仍应使用var,javascript,ecmascript-6,Javascript,Ecmascript 6,我读了一篇文章,说我们不需要再使用var关键字了,但我在代码中遇到了一个问题,我不能在if块中使用我的变量,因为我使用let声明了它 如果我们不需要使用var,我如何解决这个问题 let elementWidth = el.getBoundingClientRect().width let windowWidth = window.width // 400 px if (windowWidth > elementWidth) { elementWidth += 200 } co

我读了一篇文章,说我们不需要再使用var关键字了,但我在代码中遇到了一个问题,我不能在if块中使用我的变量,因为我使用let声明了它

如果我们不需要使用var,我如何解决这个问题

let elementWidth = el.getBoundingClientRect().width
let windowWidth = window.width // 400 px

if (windowWidth > elementWidth) {
    elementWidth += 200
}

console.log(elementWidth) // 400 px
“let”变量将不会更改块范围外的值,就像for语句一样

for( let j = 0; j < 3; j++ ) {
    console.log(i);// i = 3
};
console.log(j); //undefined
for(设j=0;j<3;j++){
console.log(i);//i=3
};
控制台日志(j)//未定义
“var”表示函数作用域,类似于

    for( var i= 0; i < 3; i++ ) {
    console.log(i);
};
console.log(i);// i = 3
for(变量i=0;i<3;i++){
控制台日志(i);
};
console.log(i);//i=3
更多

代码有什么问题?我无法访问if块内部的elementWidth“我无法访问if块内部的elementWidth”-是的,您可以。条件不是真的(或者在添加200之前,
elementWidth
为200,使其成为400),让它成为块作用域,这意味着它将仅在中声明的
{}
内可用<代码>风险值也将在其他位置提供。您现在应该避免使用
var
。问题是关于一个特定的bug,但是没有任何方法可以用来复制它。我如何解决这个问题?你的帖子没有回答这个问题