js の関数の長さはどれくらいですか?

js の関数の長さはどれくらいですか?

序文

今日は関数の長さを計算する方法を説明します。皆さんがそこから何かを学び、基礎を固めてくれることを願っています。

なぜ

なぜ私はこの知識ポイントを思いついたのでしょうか?というのは、昨夜、グループでクラスメートの一人が ByteDance の面接の質問について話し合っていたからです。

123['toString'].length + 123 = ?

正直に言うと、最初はこの質問に答えることができませんでした。実は、面接官が Number プロトタイプの toString メソッドをテストしたいのはわかっていたのですが、toString 関数の長さはどれくらいかという難しい質問に行き詰まってしまいました。それが今日この記事を書く理由です。

いくらですか?

パラメータの数

次の例を見てみましょう

関数 fn1() {}

関数 fn2 (名前) {}

関数 fn3 (名前, 年齢) {}

console.log(fn1.length) // 0
コンソール.log(fn2.length) // 1
コンソール.log(fn3.length) // 2

長さは関数のパラメータの数と同じであることがわかります。しかし、これは本当にそうなのでしょうか?続きを読む

デフォルトパラメータ

デフォルトのパラメータがあった場合、関数の長さはどれくらいになりますか?

関数 fn1 (名前) {}

関数 fn2 (name = '林三心') {}

関数 fn3 (名前、年齢 = 22) {}

関数 fn4 (名前、年齢 = 22、性別) {}

function fn5(name = '林三心', age, gender) { }

コンソール.log(fn1.length) // 1
console.log(fn2.length) // 0
コンソール.log(fn3.length) // 1
コンソール.log(fn4.length) // 1
コンソール.log(fn5.length) // 0

関数の長さは、デフォルト値を持つ最初のパラメータの前のパラメータの数であることを示しています。

残りのパラメータ

関数の仮パラメータには残余パラメータもあります。残余パラメータがある場合、それらはどのように計算されるのでしょうか?

関数 fn1(名前、...引数) {}

コンソール.log(fn1.length) // 1

残りのパラメータは長さの計算には含まれていないことがわかります。

要約する

最後に、123['toString'].length + 123 = ? の答えは 124 であることをまず発表します。

要約すると、長さは関数オブジェクトのプロパティ値であり、関数に渡す必要があるパラメータの数、つまり仮パラメータの数を示します。仮パラメータの数には残りのパラメータは含まれず、デフォルト値を持つ最初のパラメータの前のパラメータの数のみが含まれます。

js の関数の長さに関するこの記事はこれで終わりです。js の関数の長さについてさらに詳しく知りたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JS関数の継承について学ぶ記事
  • JavaScript 基礎シリーズ: 関数とメソッド
  • JavaScriptのスリープ関数の使用
  • PHP の組み込み関数 json_encode と json_decode の例外処理
  • JavaScript 関数をよりエレガントにする方法
  • JavaScript の 50 以上のユーティリティ関数の概要
  • JavaScriptコールバック関数の詳細な理解
  • JavaScript で外部変数にアクセスするサブ関数の 3 つのソリューション
  • JavaScript 関数型プログラミングの基礎

<<:  ソースコードから MySQL 8.0.20 をコンパイルしてインストールする詳細なチュートリアル

>>:  xshellリモート接続の自動切断の問題の解決方法の詳細な説明

推薦する

MySQL 8.0.17 winx64 (Navicat 付き) 手動構成バージョンのインストール チュートリアル図

1. ダウンロードアドレス: mysql-8.0.17-winx64ダウンロードして解凍する2. フ...

MySQLクエリのパフォーマンスに影響を与える大きなオフセットの理由と最適化の詳細な説明

序文MySQL クエリは select コマンドを使用し、limit および offset パラメー...

sysbenchツールによるMySQLデータベースのパフォーマンステストの実装方法

1. 背景Sysbench は、システムのハードウェア パフォーマンスをテストできるストレス テスト...

MySQL 同期遅延が発生したときに Seconds_Behind_Master が 0 のままになる理由

目次問題の説明原理分析問題分析拡大する総括する問題の説明ユーザーはプライマリ データベースに対して変...

HTML をホームページとして設定し、お気に入りに追加_Powernode Java Academy

IE ブラウザで「ホームページとして設定」および「お気に入りに追加」機能を実装する方法解決:指定さ...

HTML のテキストエリア タグ

<textarea></textarea> は、複数行を入力できるテキスト ...

Windows での Apache+Tomcat7 負荷分散構成方法の詳細な説明

準備Windows Server 2008 R2 Enterprise (2.40GH、8GB、64...

きちんとしたHTMLマークアップを使用してページを構築します

インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...

意外と知らないJSのループ速度テストのいろいろを徹底解説

目次序文1. forループ2. whileループとdo-whileループ3. forEach、map...

WeChatアプレットは日付と時刻に基づいた並べ替え機能を実装

最近、小さなプログラム プロジェクトを引き継いだのですが、リストを日付と時刻で並べ替えるという要件が...

TypeScriptはvscodeを使用してコードのコンパイルプロセスを監視します

インストールtsコマンドをグローバルにインストールする npm install -g typescr...

CSS3 で画像ドロワー効果を実装するためのサンプル コード

いつものように、まずは画像効果を投稿しましょう: このエフェクトの原理は非常にシンプルです。CSS3...

Dockerを使用してgitlabコミュニティの中国語版を構築する詳細なプロセスを教えます

1. Docker Composeを使用して起動を構成するDocker Compose を知らない場...

Dockerコンテナの接続と通信の実装

ポート マッピングは、Docker を別のコンテナーに接続する唯一の方法ではありません。 Docke...