- ベストアンサー
javascript関数のfunc.arityで引数の個数がundefinedと表示される問題
- javascriptの関数オブジェクトのfunc.arityは、関数が要求する引数の個数を返すプロパティです。
- しかし、一部のブラウザではこのプロパティがサポートされていないため、undefinedと表示されることがあります。
- この問題を回避するためには、代わりに関数のlengthプロパティを使用するか、引数の個数を手動で取得する必要があります。
- みんなの回答 (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)相当の解説を探して下さい。
その他の回答 (2)
- OrangeCup150
- ベストアンサー率62% (109/174)
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 にしか通じない命令文ということです。
お礼
回答ありがとうございます。 N4ってNetscapeのことだったんですね。 どうりで、ChromもIEでもできないわけですね。 javascriptってブラウザによって挙動が違ったりするみたいだから要注意ですね。 function goukei(a, b, c) { return(a + b + c); } n = goukei.arguments.length; document.write(n); これを実行してみましたが。 ブラウザは真っ白でした。 どうみても、どこも問題ないコードだと思うので、今回はこれでよしということにしようと思います。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
arityをサポートしていないからじゃないでしょうか。
お礼
回答ありがとうございます。 サポートしてないというのは 私は、Chromで実行しているのですが ブラウザであるChromがarityをサポートしていないということでしょうか。 試しに、IEでも、このコードを実行しましたが undefinedと表示されてしまいます。 何かサポートするには設定しなければいけないのでしょうか。
お礼
回答ありがとうございます。 ややこしいんですね。 各ブラウザによって違う挙動や、さらにjavascriptのバージョンによっても違うんですね。 Javaより記述が容易だな。習得しやすそうと思っていたjavascriptですが こういったことに注意が必要なんですね。 とほほでは、もう正規表現まで学習がすすんでしまっているので、 とりあえず、突っ走ろうと思います。 とほほのコードは、古い可能性が高いことを頭に入れて、書いているコードが動かなくても あまり気にせず、学習だけはしようと思います。