ES6 - 变量声明

143 阅读1分钟

hey ~ 我是肥阳,后期会持续更新,请记得点赞支持哟

  • let / const 不存在变量提升

变量提升:变量可以在声明之前使用

console.log(a); // undefined
var a = 10;
console.log(b); X 'Cannot access 'a' before initialization'
let b = '10'; 
console.log(b); X 'Cannot access 'a' before initialization'
const b = '10';  
  • let / const 声明已存在的变量会报错

var a = 20;
let a = 18;    X  'Uncaught SyntaxError: Identifier 'a' has already been declared'
var a = 20;
const a = 18;  X  'Uncaught SyntaxError: Identifier 'a' has already been declared'
  • let / const 不允许重复声明

let a = 'woman';
let a = 'man';  X 'Uncaught SyntaxError: Identifier 'a' has already been declared'
const a = 'woman';
const a = 'man';  X 'Uncaught SyntaxError: Identifier 'a' has already been declared'
  • let 声明的变量只在所在的代码块内有效,在范围外不能使用

{
  var a = 1;
}
console.log(a); // 1
{
  let a = 10;
  console.log(a);  // 10
}
console.log(a);    // a is not defined
  • const 用来声明一个常量,声明后变量的值不可以更改。且声明变量必须初始化

const a = 2;   √
a = 5;         X   'Uncaught TypeError: Assignment to constant variable'
const a;       X   'Uncaught SyntaxError: Missing initializer in const declaration'
  • const 可以对数组/对象的属性进行操作,但不能把一个 新的数组 / 对象 赋给 原对象 / 数组。

const a = {};
a.age = 10;    √   // {age: 10}
a = {};        X  'Uncaught TypeError: Assignment to constant variable.'
const a = [];
a.push('first');  √  // ['first'];
a = [];           X  'Uncaught TypeError: Assignment to constant variable.'

另:声明变量有6种方法:
let、 const、 var、 function、 import、 class
详情请前往阮一峰大神的文档地址:es6.ruanyifeng.com/#docs/let