一、var、let 与 const
1、作用域
var:没有块级的概念,这使得 { } 无法限定变量的访问范围
let:具有块级的概念,在块之外无法访问let声明的变量
PS:JS中的for循环体比较特殊,每次执行都是一个全新的独立的块作用域,用let声明的变量传入到 for循环体的作用域后,不会发生改变,不受外界的影响
2、变量提升
var:在变量声明之前可以使用 – undefinded
let & const:若变量没有声明则会出现错误
3、参考资料:https://juejin.im/post/5bdedd42e51d450d810a897c
二、注意事项
1、JavaScript 的变量名区分大小写
2、JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,变量可以随时更改类型
例子:js会将num进行类型转换为字符串,“+”可以实现拼接效果
3、JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行,这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)—变量可在声明之前使用