作用域的概念
es5 两个作用域:全局作用域、函数作用域
es6 增加了块作用域
let
- let var 作用域不同,let 只在块级作用域有效
- 使用 es6 强制开启严格模式,未声明会报错;es5 中使用 "use strict"
- let 不能重复定义变量
function test(){ for(let i=1;i<3;i++){ // 块级作用域 console.log(i); } console.log(i); // 报错:Uncaught ReferenceError: i is not defined}()复制代码
function test1(){ for(var i=1;i<3;i++){ // 函数作用域 console.log(i); } console.log(i); // 1 2 3 }()复制代码
const
- 声明常量,不能修改。
- const 也有块级作用域。
- 声明时必须赋值。
- 数值不允许修改;引用类型赋值,存的是指针,指针不能变,但是引用类型可以变。
function last(){ const PI=3.1415926; // const 声明常量 const k={ // const 声明对象,指针没变,但可以改变对象内容 a:1 } k.b=3; console.log(PI,k);}()复制代码