js的变量
目录
变量
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);//undefinedvar name = 'bob';console.log(age);//Uncaught ReferenceErrorlet age=26;
</script>
3.全局声明
与var关键字不同,使用let在全局作用域中声明的变量不会成为window对象的属性
<script>var name= 'Matt';console.log(window.name);//Mattlet 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>