目录
变量
var和let
1.for循环中的声明
2.暂时性死区
3.全局声明
4.条件声明
const声明
变量
java是一种强数据类型语言,对数据类型要求高,要声明清楚变量的类型
数据类型 变量名 = 值 -----> int a = 10
而javaScrit是一种弱类型语言,在声明变量时使用var关键字声明,使用变量可以表示认识类型的数据。
<script>
var a =10;
var b="hello";
var c= true;
alert(a+":"+b+":"+c);
</script>
var和let
let跟var的作用差不多,但有着非常重要的区别,let声明的范围时块作用域,而var声明的范围时函数作用域。
1.for循环中的声明
在函数里使用var声明了一个变量,那么这个变量在整个函数内都是有效的,例如在for循环里用var声明一个变量,在for循环外也是可以使用的。但是let作用域是块状作用域,只在作用域里有效,例如在for循环里用let声明一个变量,在for循环外面是不能被访问的。
2.暂时性死区
let和var的另一个重要区别,就是let声明的变量不会在作用域中被提升
<script>
console.log(name);//undefined
var name = 'bob';
console.log(age);//Uncaught ReferenceError
let age=26;
</script>
3.全局声明
与var关键字不同,使用let在全局作用域中声明的变量不会成为window对象的属性
<script>
var name= 'Matt';
console.log(window.name);//Matt
let age=26;
console.log(window.age);//undefined
</script>
4.条件声明
let声明的变量不能重复声明,在使用var声明变量时由于声明会被提升,js引擎会自动将多余鱼的声明在作用域顶部合并为一个声明。
const声明
const的行为基本与let一致,唯一一个重要的区别就是他声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行时出错。
<script>
const age=18;
age=20;//TypeError
//const也不允许重复声明
const name = 'bob';
const name = 'tom';//SyntaxError
//const声明的作用域也是块
const name ='tom';
if(true){
name = 'bob';
}
console.log(name);//tom
</script>