• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:func.arityで、undefined)

javascript関数のfunc.arityで引数の個数がundefinedと表示される問題

このQ&Aのポイント
  • javascriptの関数オブジェクトのfunc.arityは、関数が要求する引数の個数を返すプロパティです。
  • しかし、一部のブラウザではこのプロパティがサポートされていないため、undefinedと表示されることがあります。
  • この問題を回避するためには、代わりに関数のlengthプロパティを使用するか、引数の個数を手動で取得する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.3

Function.arity(JavaScript 1.2 で導入)は JavaScript 1.4 で廃止されています。JavaScript 1.1 からある Function.length の方が標準です。 ついでながら、Function.arguments も JavaScript 1.4 で廃止されています。おまけながら、Function のプロパティではない方の arguments.caller も JavaScript 1.3 で廃止されています(ECMAScript 5 で復活しましたが、strict mode では使えません)。 余談ながら、arguments.callee も ECMAScript 5 の strict mode では使えません。Arguments オブジェクトは高速化と安全性のネックになるため、遠ざけられた形になっています。もし再帰をしたければ名前付き関数を使います。 そういうわけで、「とほほ」はあまりおススメしません。ECMAScript 5 とは言いませんが、最低限 ECMAScript 3(JavaScript 1.5、JScript 5.5)相当の解説を探して下さい。

orangebanana
質問者

お礼

回答ありがとうございます。 ややこしいんですね。 各ブラウザによって違う挙動や、さらにjavascriptのバージョンによっても違うんですね。 Javaより記述が容易だな。習得しやすそうと思っていたjavascriptですが こういったことに注意が必要なんですね。 とほほでは、もう正規表現まで学習がすすんでしまっているので、 とりあえず、突っ走ろうと思います。 とほほのコードは、古い可能性が高いことを頭に入れて、書いているコードが動かなくても あまり気にせず、学習だけはしようと思います。

その他の回答 (2)

回答No.2

func.arity (N4) 関数が要求する引数の個数を返します。 N4 ってことは、Netscape Navigator 4 の事だと思いますが、現在では使われていないブラウザです。 function goukei(a, b, c) { return(a + b + c); } n = goukei.arguments.length; 上記のように変更してください。 まあ、JavaScriptには方言があるんだと思ってください。 つまり、goukei.arity はNetscape Navigator 4 にしか通じない命令文ということです。

orangebanana
質問者

お礼

回答ありがとうございます。 N4ってNetscapeのことだったんですね。 どうりで、ChromもIEでもできないわけですね。 javascriptってブラウザによって挙動が違ったりするみたいだから要注意ですね。 function goukei(a, b, c) { return(a + b + c); } n = goukei.arguments.length; document.write(n); これを実行してみましたが。 ブラウザは真っ白でした。 どうみても、どこも問題ないコードだと思うので、今回はこれでよしということにしようと思います。

回答No.1

arityをサポートしていないからじゃないでしょうか。

orangebanana
質問者

お礼

回答ありがとうございます。 サポートしてないというのは 私は、Chromで実行しているのですが ブラウザであるChromがarityをサポートしていないということでしょうか。 試しに、IEでも、このコードを実行しましたが undefinedと表示されてしまいます。 何かサポートするには設定しなければいけないのでしょうか。

関連するQ&A