はじめに 某小説っぽいタイトルにしちゃいましたが、 JavaScriptでコードを書いていた後輩が二つのコードの挙動の差に困っていたので、 原因究明をしようとしたら、最初は全然わからなかったのですが、いろいろ試してみたところ、どうやらいろんなJavaScriptの仕様が絡み合ってできた罠だったぽいので、 せっかくなので、今回でわかったことを記していこうと思います。 原因のコードのサンプル function foo() { let point = {} try { const lat = 35 const lng = 132 [point.lat, point.lng] = [lat, lng] } catch (e) { console.error(e) } } foo() みた感じ、tryブロックの中で、latとlngにセットされた値をpointオブジェクトに追加しているように見えると思