var与let均为JS中定义变量的关键字,但是它们之间也有很多区别。
var有预处理机制,而let没有预处理机制。预处理机制就是说,当在JS代码中使用var定义一个变量,程序在执行的过程中,会首先将该变量进行定义,之后才会去执行其它的程序。所以当先使用变量,再使用var定义变量时,不会报错,但是var定义变量的值不会先执行,所以结果为undefined;而使用let定义时会直接报错
var与let的作用域不同。var是全局作用域,let是块级作用域。即使var在函数中定义一个变量,但是该变量在其他地方仍然会有值,这样会导致该变量的值不被函数所控制,容易出现错误,所以let更加安全,不会出现于var一样的错误