js中for循环作用域的问题(变量提升)
程序员文章站
2024-03-25 14:35:16
...
for循环定义的变量不管里面有多少函数,变量在里面的所有函数里面都是可以取到的。
js的变量提升(var是全局变量,同时只在定义的函数方法可以理解为局部变量)
var在for循环里面定义的变量其实也是全局变量
但是let就不一样的let在{}里面写的就是局部变量。
var i = 0;
var i = 1;
console.log(i);
//var全局变量没有块级作用域
var list = [1, 2, 3, 4, 5, "laji"];
for (var i = 0; i < list.length; i++) {
console.log(i);
function say() {
console.log(i + "haha"); //下面的for循环写var,let的时候会输出未定义
var i = "今年过年你回家吗?";
console.log(i + "haha");
}
say();
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
//var全局变量没有块级作用域
var list = [1, 2, 3, 4, 5, "laji"];
for (var i = 0; i < list.length; i++) {
console.log(i + "我赌它只会输出一次");
for (let i = 0; i < list.length; i++) {
console.log(i + "haha"); //下面的for循环写var,let的时候会输出未定义 这次里面和外面都会循环5次
// var i = "今年过年你回家吗?";
console.log(i + "haha");
// }
}
// console.log(i);
// function say() {
// console.log(i + "haha"); //下面的for循环写var,let的时候会输出未定义
// var i = "今年过年你回家吗?";
// console.log(i + "haha");
// }
// say();
}
</script>
</body>
</html>
上一篇: for...in/for...of
推荐阅读
-
for循环中变量的作用域问题
-
js中for循环作用域的问题(变量提升)
-
js中for循环变量作用域
-
当心下面例子的循环:闭包中的局部变量可能和你最初想的不一样。 博客分类: js闭包问题 javascript闭包问题循环
-
浅析php变量作用域的一些问题
-
聊一聊 JS 中的循环引用及问题
-
【转】Shell中脚本变量和函数变量的作用域 博客分类: linux命令unix shell作用域shelllocal函数变量
-
【转】Shell中脚本变量和函数变量的作用域 博客分类: linux命令unix shell作用域shelllocal函数变量
-
JS中的全局变量和局部变量,和声明提升
-
微信小程序中的变量和作用域