turbolinks × let の相性?
かなり時間を取られたのでメモ。
index.html.erb
<script>
let a = "Hello";
</script>
このようにerbのscriptタグ内にletで変数宣言をすると、turbolinksでの一度訪れたページへの遷移の際
ChromeではUncaught SyntaxError: Identifier 'a' has already been declared
のように怒られてしまいます。
どうやらletで宣言した変数はページ遷移しても保持されたままのようで、再度同じ名前の変数を宣言しようとするために起こるようです。
varを使えば問題なく動作します。
index.html.erb
<script>
var a = "Hello";
</script>
なぜこうなるのか、ご存知の方はコメントお待ちしております。