相同点
- 在函数外定义变量,都是全局的
- 在函数内定义变量,都是函数级的
不同点
作用域
- 在
{}代码块中定义变量,var是函数作用域,let是块作用域
function test(){
for(var i = 0; i<10;i++){
}
// C/C++/JAVA 开发语言,由于是在for语句中定义的变量i
// 所以在for的后面是不能访问变量i的
// 但是在js可以,原因是:var 定义的变量,作用域在整个函数中
console.log("i:",i)
}
test()
直接在for中定义,是全局变量
<script>
for ( var a = 0 ;a<5;a++){
}
console.log("window:",window)
</script>
访问变量
var定义的变量可以 定义变量之前,先访问变量// 在这里可以使用 name 变量 console.log(name) var name;let定义的变量必须 先声明,后使用// 下面代码执行报错 console.log(name) let name;
重复声明变量
var可以重复声明变量//下面代码正常运行 var i = 1; var i = true; console.log(i)let不能重复声明变量//下面代码报错 let i = 1; let i = true; console.log(i)
