Javascriptは匿名関数(){}()の原理分析を実行します.

2193 ワード

匿名関数とは、関数名またはポインタが指定されていない関数のことで、自己実行匿名関数はその1つにすぎません.以下、この関数を自己実行関数と呼びます.
以下は最も一般的な自己実行関数です.
1     //       
2       (function() {
3         alert('hello');
4       })();
このコードの実行効果は、ページの再読み込み時にポップアップします.
何がそれを自動的に実行させるのですか?下のコードを見てください.
    //            ,          ~,!,+,-
      ~function(){
        alert('hello');
      }();
      !function(){
        alert('hello');
      }();
      +function(){
        alert('hello');
      }();
      -function(){
        alert('hello');
      }();
これらの書き方は前に述べた伝統的なやり方と同じです.
これらの書き方の共通点は演算子であることを発見しました.実は伝統的な方式の小さい括弧()も演算の一種です.
演算子+自生に渡すパラメータ=関数は自動的に実行されますか?しかし、いくつかの記号はサポートされていません.例えば、「=、*、/」という号は、それ自体が実行されている理由はまだ神秘的で、ネット上でもまともな答えが見つけられません.
そして、これらの演算子は無限に重畳できる不思議な現象を発見しました.....
    // function             ...
      ~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~~~~~~~~+-!!!!!!+function a(b) {
        alert('hello');
      }();
プログラムは正常に実行します!!!!
しかし、二つの場合にはエラーが発生します.
3つ以上の「+」または「-」の記号が連続して現れたらエラーが発生します.
二つの「+」または「-」の記号が連続して現れたら、エラーが発生します.
エラーメッセージ:Unicaght ReferenceError:Invalid left-hand side expressition in prefix operation (左式エラーという意味です)
その後、同じ記号で変数を計算します.同じ変数を見つけました.これはJavascriptの演算促進関数の自動実行と説明できるかもしれません.演算によってこの関数を呼び出すこともできます.
 
関数が自分で実行したのではなく、演算によってこの関数を呼び出します.部分演算のみ対応!
 
また、この自己実行関数は、必ずしも匿名関数ではない.上のコードを見てください.演算子の後の関数で関数名を定義しました.異常はありませんが、卵用もありません.このaは依然として他の方法で呼び出されていませんが、匿名関数と呼ばれる人が多いと思います.
重要な発見はすでに与えられましたが、個人の観点だけを表します.
本文があなたのために役に立つと思うなら、いいね.ありがとうございます.