在JS中,var与let都能声明变量,那么它们有什么不同呢?
两者的最主要区别是:var声明的变量的作用域是整个封闭函数
let声明的变量只在其声明的块或子块中可用
上一下代码:
<!--let与var的区别-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>t6</title>
</head>
<body>
<button type="button" οnclick="myFunction()">戳我测试var</button>
<script>
function myFunction() {
document.innerHTML="请按F12查看控制台"
var x=1;
if(true){
var x=2;
console.log(x);//写入控制台
}
console.log(x);//再在if块外写入一次x,观察x是1还是2
}
</script>
</body>
</html>
运行结果:
可见两个x都是2,那么就是说var声明的变量的作用域是整个封闭函数(否则则是2,1)
var测试了,我们来测试一下let:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>t7</title> </head> <body> <button type="button" οnclick="myFunction()">戳我测试var</button> <script> function myFunction() { document.getElementById("ddt").innerHTML="请按F12查看控制台" let x=1; if(true){ let x=2; console.log(x);//写入控制台 } console.log(x);//再在if块外写入一次x,观察x是1还是2 } </script> <p id="ddt"></p> </body> </html>
运行结果:
结果是2,1,那么就是说第二个x还是if块外面的那个let x=1,继而证明了let声明的变量只在其声明的块或子块中可用。