Javascript 我们应该总是使用'let'作为循环吗?
众所周知,Javascript不会为Javascript 我们应该总是使用'let'作为循环吗?,javascript,Javascript,众所周知,Javascript不会为for循环中的每个循环创建新的作用域。例如,这段代码: for(var i=0;i<10;i++){ //some code } console.log(i); //prints 10 instead of ReferenceError! 假设兼容性不是问题(允许/在IE11中支持,Firefox,Chrome,至少以严格的模式),我们现在应该考虑让成为编写Afor循环的标准、正确的方法吗?或者有什么理由继续使用var 另外,实现兼容性的最佳方
for
循环中的每个循环创建新的作用域。例如,这段代码:
for(var i=0;i<10;i++){
//some code
}
console.log(i); //prints 10 instead of ReferenceError!
假设兼容性不是问题(<代码>允许/<代码>在IE11中支持,Firefox,Chrome,至少以严格的模式),我们现在应该考虑<代码>让成为编写Afor循环的标准、正确的方法吗?或者有什么理由继续使用
var
另外,实现兼容性的最佳方法是什么?对于受支持的浏览器,是否可以使用let
,但对于其他浏览器,是否有某种回退,或者在每个人都升级浏览器之前,我们是否一直在使用var
“标准”是尝试在这些情况下使用
let
,如果你想要向后兼容,你需要使用babel或其他编译器,使你的代码达到es5标准。“是否有任何方法可以对受支持的浏览器使用let,但对其他浏览器有某种回退机制?”(或类似的)可能是你正在寻找的,没有退路。如果您在一个不知道新语法的旧浏览器上使用let
运行代码,无论您如何处理它,这都将是一个语法错误。我认为如果您不使用Babel(或类似工具),那么您将继续使用var关键字,因为所有低版本浏览器都不支持es6(let…)“这对我来说似乎太疯狂了,因为它以一种不直观的方式污染了名称空间。“-无论如何,您不应该过多地使用全局名称空间:-)函数作用域变量是合理的,在某些情况下,您甚至需要在循环后使用计数器变量-但是,是的,如果您个人认为它不直观,那么就没有什么可以阻止您在任何地方使用const
和let
。
for(let i=0;i<10;i++){
//some code
}
console.log(i); //gives ReferenceError 'i' is not defined