検索
ホームページウェブフロントエンドjsチュートリアルJavaScriptの通常関数とアロー関数の違いと使い方を詳しく解説

この記事では、JavaScript における通常の関数とアロー関数の違いと使い方の詳細を主に紹介します。非常に優れており、必要な方は参考にしてください。

最近質問されました:

JavaScript のアロー関数 ( => ) と通常の関数 ( function ) の違いは何ですか?

その時考えたのは、この質問はとても簡単ですね~(フラグ)、そして間違った答えをしてしまった…

アロー関数のこれは何も関係ありません呼び出されたときのコンテキストに依存し、それが定義されているコンテキストに依存します

これは完全に正しい答えではありません...ただし、完全に間違っているわけでもありません

アロー関数の this

まず第一に、私の答えには間違った部分はありません。アロー関数の this は、呼び出されたときのコンテキストとは何の関係もありません。

function make () {
  return ()=>{
    console.log(this);
  }
}
const testFunc = make.call({ name:'foo' });
testFunc(); //=> { name:'foo' }
testFunc.call({ name:'bar' }); //=> { name:'foo' }

この例からわかるように、アロー関数は定義された後は変更されません。どのように呼び出されても、これは変更されません。

しかし、厳密に言えば、これは「定義のコンテキストに依存する」わけではありません。アロー関数でこれを呼び出す場合、アロー関数は単にスコープ チェーンに沿って上向きに検索するだけであるためです。これに最も近いものを見つけて使用してください。
効果に関しては、これまでの理解と大きく変わりませんが、本質はまったく異なります。アロー関数は、通常の関数の機能を追加しません。これは呼び出しコンテキストの影響を受けませんが、多くの機能が削減されます。

アロー関数は実際にはより単純な関数です

実際には、アロー関数の通常の関数と異なる点はこれだけではありません。アロー関数には、this、arguments、super(ES6)、new.target(ES6)...

他の人から例を借用します:

function foo() {
  setTimeout( () => {
   console.log("args:", arguments);
  },100);
}
foo( 2, 4, 6, 8 );
// args: [2, 4, 6, 8]
通常の関数では、さまざまなローカル変数が自動的にバインドされ、アロー関数はスコープチェーンに沿って上向きに検索するのが非常に簡単です...

アロー関数は非常にシンプルで純粋なものです。

したがって、アロー関数は関数型プログラミングに適していると個人的には思います。また、アロー関数を使用すると、変数の影響を受けにくくなります。明示的に宣言されていないため、予期しない計算結果が生成される可能性があります。

では、通常の関数はアロー関数と同じ効果を達成できるでしょうか。

当時の私のように、この不安定な男を単純に修正することを考えたとしたら...非常に簡単です。次のような一般的に使用される方法がいくつかあります。

function make () {
  var self = this;
  return function () {
    console.log(self);
  }
}
または

function make () {
  return function () {
    console.log(this);
  }.bind(this);
}
ただし、2 番目の方法ではこの変数のみを修正できます。前述したように、To を実行するためにアロー関数の引数などの変数もスコープ チェーンから検索されます。同様の効果を達成するには、ローカル変数を再定義する方法が 1 つだけあり、babel もこの方法を使用してアロー関数を処理します。

function make () {
  return ()=>{
    console.log(this);
    console.log(arguments);
  }
}
//babel it...
function make() {
  var _this = this,
    _arguments = arguments;
  return function () {
    console.log(_this);
    console.log(_arguments);
  };
}

では...アロー関数で引数を使用したい場合はどうすればよいでしょうか?

...このようなニーズがある場合は、通常の関数を使用する方が適切かもしれません...

しかし、それはあなたがそうするという意味ではありませんアロー関数で配列のような関数を使用してフォーム内のすべてのパラメータを取得することはできません。次のような展開演算子を使用してパラメータを受け取ることができます:

const testFunc = (...args)=>{
  console.log(args) //数组形式输出参数
}
メソッドを記述する必要がありますが、やはりアロー関数の方が適していると思います。 固定パラメータを受け取り、計算結果を返す単純なケースです。

以上がこの章の内容全体です。その他の関連チュートリアルについては、

JavaScript ビデオ チュートリアル をご覧ください。

声明
この記事は脚本之家で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。