でたらめJSシリーズ-匿名関数の自動運転
2398 ワード
関数にはいろいろな種類があります.私たちはわからない関数を選んで勉強を始めます.
JSで自動運転される匿名関数
JavaScriptでは匿名関数(Javaを勉強するときにも同様の概念があり、匿名の実装クラス)が使用され、Java Scriptの関数も対象であり、メモリの一部を保存する必要があります.この関数を呼ぼうとすれば、私たちはこのメモリを見つけて実行するだけです.キーステップは以下の通りです.は、関数オブジェクトを一つのメモリに保存する .このメモリを見つけました. 普通は関数を使って名来でこの住所を探しますが、関数名を通してこのメモリアドレスを探すためのツールです.
匿名関数は、名前の関数がないという意味で、上記のtest 02関数式において匿名関数を作成し、その関数を変数
もう一つの匿名関数の呼び出しルールがあります.第一歩:関数 をFunctionキーワードで定義する.第二ステップ:括弧を使って内容をまとめます.
キーステップ:これは文法の要求にすぎません.後の実行文はエンジンによって正確に認識されません.このように関数を定義すれば、エンジンはメモリを割り当てて保存します.
第3ステップ:直接後ろに括弧を入れて呼び出しを完了し、パラメータ に入れることができます.
上記のコードの中で、私達は実は2つのメモリ保存関数を含んでいます.自動運転の関数自体はメモリを持っています.実行している括弧に触れると自動的に動作します.また、戻ってきた関数を保存するメモリがあります.戻り値は実はこのメモリアドレスです.このようにlog変数はこの保存関数のメモリを指しています.したがって、関数の実行は、ロゴを使用して行うことができます.
いくつかの面白い自動運転関数の定義方法
JSで自動運転される匿名関数
JavaScriptでは匿名関数(Javaを勉強するときにも同様の概念があり、匿名の実装クラス)が使用され、Java Scriptの関数も対象であり、メモリの一部を保存する必要があります.この関数を呼ぼうとすれば、私たちはこのメモリを見つけて実行するだけです.キーステップは以下の通りです.
function test01(){
console.log(" ");
}
//
test01();
var test02 = function () {
console.log(" ");
}
//
test02();
上記の例では、私たちはこのメモリアドレスを関数名で見つけました.関数の実行、つまりこのメモリを見つけたら実行できます.匿名関数は、名前の関数がないという意味で、上記のtest 02関数式において匿名関数を作成し、その関数を変数
test02
に与え、test02
で関数の呼び出しを行います.呼び出し方式は変数test02
の後に括弧を入れることです.これは匿名関数の呼び出しの一つです.もう一つの匿名関数の呼び出しルールがあります.
キーステップ:これは文法の要求にすぎません.後の実行文はエンジンによって正確に認識されません.このように関数を定義すれば、エンジンはメモリを割り当てて保存します.
(function (x, y) {
console.log(x+y);
})(2, 3);
//
var test03 = function(x,y){
console.log(x+y);
}(2,3);
コード解析var log=(function(){
console.log(" ");
return function(param){
console.log(param);
};
})();
log("www.baidu.com");
このコードは比較的古典的なコードです.ここで自動的に実行される匿名関数を作成しましたが、その戻り値は依然として匿名関数です.つまり、関数は運転後に戻ってきた結果は依然として関数です.戻り値の関数を変数のロゴに割り当てると、戻ってきた関数をロゴ変数で呼び出すことができます.上記のコードの中で、私達は実は2つのメモリ保存関数を含んでいます.自動運転の関数自体はメモリを持っています.実行している括弧に触れると自動的に動作します.また、戻ってきた関数を保存するメモリがあります.戻り値は実はこのメモリアドレスです.このようにlog変数はこの保存関数のメモリを指しています.したがって、関数の実行は、ロゴを使用して行うことができます.
いくつかの面白い自動運転関数の定義方法
// 2 ()
(function () { /* code */ } ()) //
(function () { /* code */ })() //
// () JS &&, ,
// ,
var i = function () { return 10; } ();
true && function () { /* code */ } ();
0, function () { /* code */ } ();
// ,
// function
!function () { /* code */ } ();
~function () { /* code */ } ();
-function () { /* code */ } ();
+function () { /* code */ } ();
// , new , ,
// http://twitter.com/kuvos/status/18209252090847232
new function () { /* code */ }
new function () { /* code */ } () // , ()
void function(){ /* code */ }();