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 以降の一般的なコマンドの詳細な説明

リモートアクセスを有効にする次のコマンドを実行して、root ユーザーのリモート アクセス権を有効に...

Vue cli開発に基づく外部コンポーネントVantのデフォルトスタイルの変更の詳細な説明

目次序文1. 少ない2. コンポーネントをインポートする3. 設定ファイルを変更するステップ1: l...

Docker 接続 MongoDB 実装プロセスとコード例

コンテナが起動した後まず管理者にログインして新しいユーザーを作成してください $ docker ex...

html.cssオーバーフローの包括的な理解

html.cssオーバーフローの包括的な理解XML/HTML コードコンテンツをクリップボードにコピ...

単一/複数行テキストを含む div を垂直方向に中央揃えする N 通りの方法 (高さ不明/高さ固定)

この問題について話すとき、垂直方向の中央揃えを設定するための vertical-align 属性が ...

データベース接続プール Druid の使用手順

総合的なパフォーマンス、信頼性、安定性、スケーラビリティ、使いやすさなどの要素に基づいて、最適なデー...

ファイアウォールルールの設定とコマンド(ホワイトリスト設定)の詳しい説明

1. ファイアウォールルールを設定する例1: ポート8080を外部に公開する ファイアウォールコマン...

Vue Nativeを使用したモバイルアプリケーションの構築プロセスの完全な記録

目次序文Vue Nativeの機能宣言的レンダリング双方向バインディングVue.js エコシステムの...

不規則な投影を実現するためのボックスシャドウとドロップシャドウのサンプルコード

border-radius で生成できる四角形やその他の図形に影を追加する場合 (「Adaptive...

MySQLクエリステートメント内のユーザー変数のコード分析

前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ス...

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...

MySQL MyISAM デフォルト ストレージ エンジンの実装原則

デフォルトでは、MyISAM テーブルはディスク上に .frm (テーブル構造ファイル)、.MYD ...

MySQLのexplain型の詳細な説明

導入:多くの場合、さまざまな選択ステートメントを使用して必要なデータを照会した後、多くの人は作業が正...

HTMLの基礎: HTMLの基本構造

HTML ハイパーテキスト ドキュメントの基本構造は、ドキュメント ヘッダーとドキュメント本体の 2...