とほほの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と表示されるのでしょうか。
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)相当の解説を探して下さい。
回答ありがとうございます。
ややこしいんですね。
各ブラウザによって違う挙動や、さらにjavascriptのバージョンによっても違うんですね。
Javaより記述が容易だな。習得しやすそうと思っていたjavascriptですが
こういったことに注意が必要なんですね。
とほほでは、もう正規表現まで学習がすすんでしまっているので、
とりあえず、突っ走ろうと思います。
とほほのコードは、古い可能性が高いことを頭に入れて、書いているコードが動かなくても
あまり気にせず、学習だけはしようと思います。
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 にしか通じない命令文ということです。
回答ありがとうございます。
N4ってNetscapeのことだったんですね。
どうりで、ChromもIEでもできないわけですね。
javascriptってブラウザによって挙動が違ったりするみたいだから要注意ですね。
function goukei(a, b, c) { return(a + b + c); }
n = goukei.arguments.length;
document.write(n);
これを実行してみましたが。
ブラウザは真っ白でした。
どうみても、どこも問題ないコードだと思うので、今回はこれでよしということにしようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ユーザー関数の自動計算(excel2003) 1 2023/02/06 06:46
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- JavaScript JavaScriptの即時関数の書き方 1 2022/11/29 09:52
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript functionはhtmlやjsに2度使えませんか 2 2022/08/03 19:55
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
window.openでタイトル名の指定
-
ホームページに日付を自動更新...
-
なぜ、ジャバスクリプトが表示...
-
javaで画像をランダム表示しつ...
-
document.writeで画面が消える
-
ActiveXobjectが作成できない
-
JavaScriptで決まった「時刻」...
-
C#テキストボックスの文字を配...
-
Boolean型配列中のTrueの有無を...
-
google apps scriptの終了のさせ方
-
関数でy=g(x)のgとは何の略です...
-
jspからjavascriptの変数引継ぎ
-
任意の座標をクリックさせるには
-
Linux バイナリ実行できない "...
-
javascriptでスロットゲームを...
-
javascriptでiframeのURL変更は?
-
javascript 特定のタグのidの存...
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
VSCODE[Python]の設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
ホームページに日付を自動更新...
-
テキストボックスに入力された...
-
for文のiを使ってリンク先のア...
-
○歳△ヶ月と×日を計算してくれる...
-
引数を渡さずに呼び出し元の変...
-
なぜ、ジャバスクリプトが表示...
-
innerHTMLにて設定した情報を再...
-
前のページに戻るとページトッ...
-
更新でランダムでページ内のテ...
-
今日の月と日付の1週間後や3日...
-
「今日の日付けを画像で表示」...
-
java カレンダーの日付指定で...
-
文字列を点滅させたい
-
HTMLを記述しつつサブ窓(showM...
-
条件分岐(IF文)の簡素化
-
Java Scriptのメソッドについて
-
javascriptとphpの連携で疑問
-
現在の日付から、1ヶ月前にす...
-
この方法を教えてください。
おすすめ情報