Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们应该总是使用'let'作为循环吗?_Javascript - Fatal编程技术网

Javascript 我们应该总是使用'let'作为循环吗?

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 另外,实现兼容性的最佳方

众所周知,Javascript不会为
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