相同点
函数作用域
在一个函数内,不管是var还是let声明的变量,都不能在函数外进行使用
function xie(){
var x=2
let y=2
}
//在函数外不能使用x变量和y变量
全局作用域
声明var x=2和let y=2的全局变量,可以在函数体内使用
var x=2
let y=2
function xie(){
//可以使用x变量和y变量
}
不同点
关于重新声明变量
声明了一个var x=2的全局变量,在代码块中修改为x=3,在离开该代码块后x变为了3
var x=2
{
var x=3
}
//在此处x=3
而一个let x=2的全局变量,在代码块中修改为x=3,在离开该代码块后x还是2
let x=2
{
let x=3
}
//此处x=2
关于块作用域
在代码块内声明了一个var x=2,在代码块外可以使用x变量
{
var x=2
}
//此处可以使用x变量
在代码块内声明了一个let x=2,在代码块外不能使用x变量
{
let x=2
}
//此处不能使用变量
关于循环
定义一个var x=2的变量,使用一个循环把x进行加减,x的值会随着循环的加减变化而变化
定义一个let x=2的变量,使用一个循环把x进行加减,x的值不会随着循环的加减变化而变化
小知识点
使用let定义的全局变量不能使用window对象,var的可以