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リモート接続の自動切断の問題の解決方法の詳細な説明

推薦する

Docker を使用した war パッケージ プロジェクトのデプロイの実装

Docker で war をデプロイするには、コンテナを使用する必要があります。ここでは tomca...

Kubernetes コントローラーとラベルの簡単な分析

目次01 k8sの一般的なコントローラーRCコントローラーデプロイメント コントローラーステートフル...

MySQLスタートアップが起こした事故の実録

目次背景MySQLが完全に起動したかどうかを確認する方法事故最初の変更2回目の改訂要約するMySQL...

Ubuntu で .sh ファイルを実行するいくつかの方法の違いについて簡単に説明します。

序文特に bash 環境では、スクリプトの実行方法によって結果が異なります。スクリプトを実行する方法...

JavaScript を使用してセカンダリ メニューを作成する

この記事では、セカンダリメニュー効果を実現するためのJavaScriptの具体的なコードを参考までに...

mysql5.7.14 解凍版インストールグラフィックチュートリアル

MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...

Docker環境でMySQLを実行し、Binlogを有効にしてマスタースレーブ同期を構成する方法

同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...

Vueプロジェクトの支払い機能コードの詳細な説明

1. Alipay方式: Alipay メソッド: Alipay をクリックして支払い、バックエンド...

Ubuntu 20.04は静的IPアドレスを設定します(異なるバージョンを含む)

Ubuntu 20.04はnetplanを通じてネットワークを管理するため、以前のバージョンとは少...

画像ボタンをフォームのリセットボタンとして使用する方法

フォームを作成するときに、送信ボタンとリセットボタンを配置することがよくあります。ページの外観を考慮...

WeChatアプレットが連携メニューを実現

最近はコース設計を実現するために、フロントエンドも少しやっています。今日はいくつかの機能を実現するた...

ユーザー エクスペリエンス デザイナーとは誰ですか?

怖いですね! 写真の翻訳: (内側から外側へ)最初のレイヤー:ユーザーエクスペリエンス第2層:コンテ...

vue+elementUI で埋め込みテーブルを実装する方法の例

大学 4 年生のときのインターンシップ中に、表内のデータの番号をクリックすると、そのデータの下に新し...

タブ切り替えを実装するための HTML サンプル コード

タブ切り替えもプロジェクトではよく使われる技術です。一般的にタブ切り替えはjsやjqを使って実装され...

MySQL最新バージョン8.0.17解凍版インストールチュートリアル

個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...