1.var
首先var是一个关键字,是用来声明变量的!
声明变量有两种方式:
1.var a = 1;这里如果是在全局中声明的是一个全局变量,如果是在function中声明的变量就是一个局部变量;
2.a = 1;这里实际上不能算是声明变量,只能算是给一个属性进行赋值,相当于是给全局添加了一个属性。
这里两种方式的区别:前者是声明的一个变量,而后者仅仅只是添加一个属性。前者因为是一个变量不能直接删除,而后者是 可以被删除的。
var声明变量了方式是:首先定义一个变量,var a;在给变量a赋值1;这里首先是把变量提升到代码块头部(最上面):
实例:
这里运算的方式就是
var a;
console.log(a)
//因为现在没有给a进行赋值所以a是undefined的
a = 1;
最好不要使用var进行声明变量,它会让作用域进行污源,因为会把变量提升到最上面所以当在开发过程中使用var进行声明的话会重复变量,而且后面声明的变量的值会把前面的值进行覆盖,这样就会出现问题,并且不好排查问题。
2.let
let是es6提供的一个新的关键字!
使用let声明的变量是拥有一个块级作用域,在es6之前作用域只有两种:全局作用域和局部作用域。
使用let声明变量,在一个块级作用域内不能重复声明变量,出了这个块级作用域就失效了。
不是很推荐使用,虽然使用let进行声明变量目前没有发现有太大问题。
3.const
const也是es6提供的新的关键字!
使用const声明的就不是变量了,而是一个常量,且不能进行修改(数组和对象除外)。
推荐使用const来声明常量