1. esehara@github

    No comment

    esehara@github
Changes in body
Source | HTML | Preview
@@ -1,59 +1,59 @@
# はじめに
だいたい昔からJavaScriptを触ってたりすると、`ECMA-262 Edition 5.1`に慣れきってしまって、もうそれでいいじゃんという雰囲気になったりする。しかし、既に`5.1`だけを使うのは老害なのではないか(はっきりとは断言しない)という危機感によって、今回は`ECMAScript 2015`を勉強しようという話になった。
---
# なぜ`5.1`は老害なのか
[<img width="1638" alt="01.png" src="https://qiita-image-store.s3.amazonaws.com/0/1036/83b57021-afb7-7289-8b5c-722455be39af.png">](https://babeljs.io/)
まず最初にBabelによって、`ECMA Script2015`を無理矢理`5.1`にすることが可能になった。その後、段々と対応ブラウザが増えつつあり、今後起きかわる可能性がある。これはプロダクトの都合。プログラマーとしては格段に書きやすくなった。
---
# 参考資料
![book.jpg](https://qiita-image-store.s3.amazonaws.com/0/1036/359ca9b7-9820-75e2-065d-f1e6041ccc19.jpeg)
- [Amazon](https://www.amazon.co.jp/dp/4774144665/esehara-22)
2016年11月に出版されたので、とにかく`ECMAScript 2015`の対応は早かった。本の内容も、めくってみた感じだと、それほど悪くない印象がある。
---
# 参考資料2
## [はてな教科書 JavaScript 編](https://hatena.github.io/Hatena-Textbook-JavaScript/)
無料で見れる研修テキスト。はてななので、それほど間違っていないことを期待したい。
---
# 地道に`let`からやっていく
だいたいの変数宣言は`var`から`let`に起きかえることが可能。
理由としては、殆どの変数宣言はスコープ内で使われるものでしかなく、`let`はスコープから脱出すると、その変数が解放される。以下は「はてな」の教科書から取ってきた実例。
```js
if (true) { let x = 100; }
console.log(x);
// ReferenceError: x is not defined
```
余程スコープを横断したいときには`var`を使うと便利ではあるんだが……
あと地味に重要な点としては、`let`を使うと、同じ変数が宣言できなくなる。このことによって、宣言しようとした変数をかぶらせない、といった配慮が可能になるのだが、そもそも**二重に宣言してしまいそうになるコードを書くほうが悪い**ということになる。
# 地道に`const`からやっていく
`const`は見た目の通り、定数を宣言するときに使う。この場合の定数とは「再代入不可能」ということである。ただし、その変数に対して再代入を禁止するという意味であって、**代入された値の不変性を保証するものではない**。ここは勘違いされやすいが、再代入が不可能であるということは、必ずしもImmutableであることを意味してはいない。
```js
const hoge = [1, 2, 3];
hoge[0] = "foobar";
console.log(hoge);
```
-通常、この手の配列
+通常、この手の配列はバグを生みやすい。**配列は地獄だ。**