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

推薦する

JS に依存せずにレスポンシブ レイアウトを実現する CSS3 モバイル vw+rem メソッド

1. はじめに(1)vw/vhの紹介使用する前に、vw と rem とは何か、その機能について簡単に...

BFCとは何ですか? CSS 疑似要素を使用してフロートをクリアする方法

BFCコンセプト:ブロック フォーマット コンテキストは、BFC 内の要素を外部の要素から分離する独...

Vueタイマーの実装方法

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

Webフロントエンド開発におけるエラーを見つけるための基本的な考え方

WEB開発は主に2つのインタラクション(B/Sデータ)から構成されますブラウザ: 1html、css...

Alipay の新しいホームページのフロントエンドの実践的な概要

もちろん、ページ パフォーマンスの最適化に関する個人的な経験も含まれています。ここでいくつかの点につ...

Linux sftp コマンドの使用法の概要

sftp は、安全なファイル転送プロトコルである Secure File Transfer Prot...

Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

1. バックグラウンド実行一般的に、Linux 上のプログラムは .sh ファイル (./sh フ...

Reactプロジェクトで画像を導入するいくつかの方法

imgタグは画像を導入しますreactは実際にはjsリーダー関数を介してページをレンダリングするため...

VueはPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

MySQLの複合インデックス方式の詳細な説明

どの DBMS でも、インデックスは最適化にとって最も重要な要素です。データ量が少ない場合、適切なイ...

MySQLの自動増分IDについて知っておくべきこと

はじめに: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (A...

ES6 における Object.assign() の使い方の詳細な説明

目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...

さようなら Docker: 5 分で Containerd に移行する方法

Docker は非常に人気のあるコンテナ技術です。K8S によって廃止され、別のコンテナ技術である ...

IISとAPACHEはHTTPSへのHTTPリダイレクトを実装しています

7 のMicrosoft の公式 Web サイトから HTTP Rewrite モジュールをダウンロ...

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...