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>