Javascript の自己実行匿名関数 (function() { })() の原理の簡単な分析
関数は JavaScript で最も柔軟なオブジェクトです。ここではその匿名関数の使用法のみを説明します。匿名関数とは、関数名やポインターを指定しない関数を指します。自己実行匿名関数は、その 1 つです。以下では、自己実行関数と呼びます。以下は、最も一般的な自己実行関数の 1 つです。関数の実行:
// 传统匿名函数 (function() { alert('hello'); })();
このコードの実行効果は、ページがリロードされるときに「hello」がポップアップすることです。何が自動的に実行を促すのでしょうか。 、以下のコードを見てください
// 在传统写法上去掉小括号,并在前面加上运算符 ~,!,+,- ~function(){ alert('hello'); }(); !function(){ alert('hello'); }(); +function(){ alert('hello'); }(); -function(){ alert('hello'); }();
これらの書き込みメソッドの実行と上記の従来の方法に違いはありません
これらの書き込みメソッドの共通の分母は、実際には括弧 () であることがわかりました。従来の方法では、次のような演算子にも属します。 a=b*(c+d),
演算子 + 自己生成パラメータに渡される = 関数が自動的に実行されますか?ただし、「=、*、/」などの一部の記号はサポートされていません。その自己実行の理由はまだ非常に謎であり、インターネット上でまともな答えを見つけることができません
そして、私は不思議な現象を発見しました。これらの演算子は無限のオーバーレイにすることができます。 。 。 。 。 。
// function前面是特定符号可以无限叠加... ~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~~~~~~~~+-!!!!!!+function a(b) { alert('hello'); }();
プログラムは正常に動作します!!!!!!
ただし、エラーが報告される状況は 2 つあります
「+」または「-」記号が 3 つ以上連続して表示されると、エラーが発生します
2つの「+」または「-」記号の後に他の記号が続く場合、「++~」、「--+」などのエラーが発生します
エラーメッセージ: Uncaught ReferenceError: Invalid left-hand side;接頭辞演算の式 (左側の式が間違っているという意味)
次に、同じ記号を使用して変数を操作したところ、まったく同じであることがわかりました。これは、JavaScript の操作が の自動実行を促していることを示している可能性があります。関数を呼び出すこともできますが、操作を通じて関数を呼び出すこともできます。
関数自体が実行されるのではなく、計算によって関数が呼び出されるのです! , ただし一部の計算方法しかサポートされていません。
さらに、この自己実行関数は匿名関数ではない可能性があります!上のコードを見ると、演算子以降の関数内に関数名 a を定義していますが、例外はありませんが、役に立ちません - -! ですが、この a はまだ他のメソッドから呼び出すことはできませんが、呼び出す人も多いと思います。それが匿名関数であることには問題があります。
上記は、編集者が紹介した Javascript の自己実行匿名関数 (function() { })() の原理を簡単に分析したものです。皆さんのお役に立てれば幸いです。
JavaScript の自己実行匿名関数 (function() { })() の原理に関する関連記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

エントリーレベルのタイプスクリプトチュートリアルをマスターしたら、TypeScriptをサポートするIDEで独自のコードを作成し、JavaScriptにコンパイルできるはずです。このチュートリアルは、TypeScriptのさまざまなデータ型に飛び込みます。 JavaScriptには、NULL、未定義、ブール値、数字、文字列、シンボル(ES6によって導入)とオブジェクトの7つのデータ型があります。 TypeScriptはこれに基づいてより多くのタイプを定義し、このチュートリアルではすべてを詳細に説明します。 ヌルデータ型 JavaScriptのように、Typescriptのnull

この記事では、Javaのコレクションフレームワークの効果的な使用について説明します。 データ構造、パフォーマンスのニーズ、スレッドの安全性に基づいて、適切なコレクション(リスト、セット、マップ、キュー)の選択を強調しています。 コレクションの使用を効率的に最適化します

このチュートリアルでは、chart.jsを使用してパイ、リング、およびバブルチャートを作成する方法について説明します。以前は、4つのチャートタイプのchart.js:ラインチャートとバーチャート(チュートリアル2)、およびレーダーチャートと極地域チャート(チュートリアル3)を学びました。 パイとリングチャートを作成します パイチャートとリングチャートは、さまざまな部分に分かれている全体の割合を示すのに理想的です。たとえば、パイチャートを使用して、サファリの男性ライオン、女性ライオン、若いライオンの割合、または異なる候補者が選挙で受け取る票の割合を示すことができます。 パイチャートは、単一のパラメーターまたはデータセットの比較にのみ適しています。パイチャートのファンの角度はデータポイントの数値サイズに依存するため、パイチャートは値のあるエンティティをゼロ値で描画できないことに注意してください。これは、割合がゼロのエンティティを意味します
