目录
3.临时性死区
首先我们要知道var let const都是用来定义一个变量的
1.var的特点以及用法
var的特点总结:
- 有变量提升
- 定义了相同的变量名时候,不会报错,只会覆盖(后覆盖前)
- 可以去掉var关键字,变成全局变量
- 可以一次定义多个变量
- 可以被低版本浏览器兼容
我们来具体看下每个var的特点:
(1)因为代码是从上往下读取的,当用var定义一个变量却未赋值的时候,返回的是undefined;
当被赋值后,显示的是值,那么我们由此可以看出var定义一个变量的时候,是拥有变量提升的,因为它从undefined变成了数值;
var i;
/* 这个时候i打印出来的是undefined
因为i还未赋值 */
console.log(i)
i=123;
/* 这个时候i打印出来的是123
因为i赋值并且有变量提升的特点 */
console.log(i)
(2)当var定义了相同的变量名,但是里面数值不一样的时候,会发生覆盖的情况,且不会报错(低版本的浏览器也可以兼容)
var s =200;
var s =300;
/* 打印出来显示是300
因为覆盖了s=200 */
console.log(s)
(3)我们在把var关键字去掉的时候,那么这个变量会变成全局变量,可被全局调用
(注:虽然可以通过省略var来实现定义全局变量,但不推荐这么做,因为这在维护起来会很难维护,容易看代码的时候看迷。而且在严格模式下,这样省略就会造成给为声明的变量赋值,就会报错。)
k = 300;
/* 打印出来显示是300
且是全局变量 */
console.log(k)
(4)可以多次定义变量
var a=1;b=2;c=3;
/* 打印出来显示1,2,3 */
console.log(a,b,c)