JavaScript
前言
ES6:
+ 官方名称叫做 ES2015
+ 语法层面的更新
=> 原先: var a
=> ES6: let a
+ 我们书写代码:
=> 不需要考虑语法层面的兼容
=> ES6 转换 ES5 的工具叫做 babel
ES6定义变量
let/const 和 var 的区别
let/const 一起和 var 的区别:
1. var 会进行预解析
=> let/const 不会进行预解析, 必须先定义后使用
2. var 可以声明重复的变量名
=> let/const 不能声明重复的变量名
3. var 没有块级作用域
=> let/const 有块级作用域
块级作用域
+ 被代码块限制变量的使用范围
+ var: 只有函数私有作用域才能限制使用范围
+ let/const: 只要是能书写代码段的 {} 都能限制使用范围
// let/const 和 var 的区别
// 1. 预解析
// console.log(a) // undefined
// var a = 100
// console.log(a) // 100
// 使用在定义之前会报错
console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initialization
let a = 100
// const a = 100
console.log(a) // 先定义完后使用是没问题的 100
// let/const 和 var 的区别
// 2. 重复变量名
// var num = 100
// var num = 200
// console.log(num) // 200
// 不能重名
let num = 100
console.log(num) // Uncaught SyntaxError: Identifier 'num' has already been declared
let num = 200
const num = 200
console.log(num)
const num = 300 // Uncaught SyntaxError: Identifier 'num' has already been declared
// let/const 和 var 的区别
// 3. 块级作用域
// if(true){
// // 全局变量
// var num = 100
// }