久々のブログ
皆様お久しぶりです、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を使うようなテクニカルなコードを書く事は滅多に無いのですが、頭の片隅に置いておくと良いでしょうね。
コメント
コメントを投稿