アプリ版:「スタンプのみでお礼する」機能のリリースについて

とほほのjavascriptで勉強しているのですが
http://www.tohoho-web.com/js/function.htm

関数オブジェクトのfunc.arityのところ
関数が要求する引数の個数を返します。
とあるのに、

function goukei(a, b, c) { return(a + b + c); }
n = goukei.arity;
document.write(n);

このコードを書いて実行しても
引数の個数の3ではなく、undefinedが表示されます。

ちゃんと引数は3個だし、functionで定義した関数も、document.write文の前に宣言してあり
ぱっとみ問題ないように思われるのですが、どうしてundefinedと表示されるのでしょうか。

A 回答 (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)相当の解説を探して下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ややこしいんですね。
各ブラウザによって違う挙動や、さらにjavascriptのバージョンによっても違うんですね。

Javaより記述が容易だな。習得しやすそうと思っていたjavascriptですが

こういったことに注意が必要なんですね。

とほほでは、もう正規表現まで学習がすすんでしまっているので、
とりあえず、突っ走ろうと思います。

とほほのコードは、古い可能性が高いことを頭に入れて、書いているコードが動かなくても
あまり気にせず、学習だけはしようと思います。

お礼日時:2012/06/07 20:28

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 にしか通じない命令文ということです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

N4ってNetscapeのことだったんですね。
どうりで、ChromもIEでもできないわけですね。

javascriptってブラウザによって挙動が違ったりするみたいだから要注意ですね。

function goukei(a, b, c) { return(a + b + c); }
n = goukei.arguments.length;
document.write(n);

これを実行してみましたが。
ブラウザは真っ白でした。
どうみても、どこも問題ないコードだと思うので、今回はこれでよしということにしようと思います。

お礼日時:2012/06/07 20:22

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

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

何かサポートするには設定しなければいけないのでしょうか。

お礼日時:2012/06/07 18:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!