スキップしてメイン コンテンツに移動

投稿

2月, 2018の投稿を表示しています

JavaScriptのargumentsって気持ち悪い動きをするんですね

久々のブログ 皆様お久しぶりです、Arc Cosineです。 最近は、ゲームブログばかり更新しているので、この雑ブログも閑古鳥が泣いております。 今日は珍しく技術的な話です。 JavaScriptのargumentsって、色々便利に使えるのですが、意外とその仕様をしっかりと理解していませんでした。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments 興味がある方は、↑を見てください。 見てて面白いなーと思ったのが、このコード。 function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a); } func(10); // 99 お前変わるのかよwwwww function func(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]); } func(10); // 99 こんな気持ち悪い動きもします。 aを変えているのに、arguments[0]が変わるという挙動をします。 ちなみに、デフォルト値を設定するという気持ち悪いコードを書くとこういう動きをします。 function func(a = 55) { arguments[0] = 99; // updating arguments[0] does not also update a console.log(a); } func(10); // 10 なんだよお前wwwwww いやぁ、草が生えます。 こういう謎の動きをするので、strictではない、デフォルト値を指定するという書き方は、避けたほうが良いですねー。 JavaScriptを触り続けて10年が経過しようとしていますが、こういう基本的な事でも知らないことってあるものですね。 argumentsを使うようなテクニカルなコードを書く事は滅多に無いのですが、頭の片隅に置いておくと良いでしょうね。