読者です 読者をやめる 読者になる 読者になる

kkana's blog

新米コーダーの忘れそうなことメモ

letとconstを覚えた

ES2015

最近N予備校を受け始めたんですが、javascriptの入門編ではすでにES2015で学ぶのが前提のカリキュラムになってるんですね(当たり前か・・)

letとconstと 今まで使っていたvarの違い

有効範囲が違う

letとconstはif forなどの{}のブロックの中で有効になる

'use strict';
if (true) {
  let a = 1;
}
console.log(a);//a is not defined
for (let i = 0; i < 10; i++) {
  console.log(i); // => 0, 1, 2, ... 9
}
console.log(i);//i is not defined

巻き上げがない

var のときは

'use strict';
function aaa() {
  console.log(hoge); //undefined
  var hoge = 1;
}
aaa();

「var foo」の部分が関数の先頭に巻き上げられていたのでエラーにならないが

'use strict';
function aaa() {
  console.log(hoge); //エラー
  let hoge = 1;
}
aaa();

letやconstだと巻き上げがないのでエラーになる。

letとconstの違い

let → 変化する変数

再宣言 不可

'use strict';
let hoge = 1;
let hoge = 2;//Identifier 'hoge' has already been declared

再代入 可

'use strict';
let hoge = 1;
hoge = 2;

const → 変化しない変数(定数)

再宣言 不可

'use strict';
const hoge = 1;
const hoge = 2;//Identifier 'hoge' has already been declared

再代入 不可

'use strict';
const hoge = 1;
hoge = 2;//Identifier 'hoge' has already been declared

オブジェクトや配列の中身の編集はできる

'use strict';
const obj = {a : 1};
obj.a = 2;
obj.b = 3;
console.log(obj);//Object {a: 2, b: 3}