この記事の内容は、jsの機能とは何か? js での関数の使用法は参考になると思います。
Functionと関数
FunctionはJavaScriptが提供する参照型であり、FunctionオブジェクトはFunction型を通じて作成されます。
JavaScript では、関数はオブジェクトの形式でも存在し、各関数は Function オブジェクトです。
//字面量方式创建函数 var fun =function () { console.log(100) }; //函数声明方式创建函数 function fn () { console.log(200) }; /* 创建Funtion类型的对象 * var 函数名 = new Function('参数',''函数体)*/ var f = new Function('a','console.log(a)'); f(2);//以函数方式调用
Functionの型
Functionのapply()メソッド
Functionのapply()メソッドは、関数を呼び出すために使用され、指定されたthis値と配列をパラメータとして受け取ります。
//定义函数 function fun(value) { console.log(value) } /* 函数的apply()方法——>用于调用一个函数 函数名.apply(thisArg,[argsArray]) thisArg——>可选项,函数运行时使用的this值 argsArray——>可选项,一个数组或者类数组对象,其中的元素作为单独的参数传给Function函数。*/ fun.apply(null,['100']);
Functionのcall()メソッド
Functionのcall()メソッドは、関数を呼び出すために使用され、指定されたthis値とパラメータリストを受け入れます。
var fun = function (value,a,b,) { console.log(value,a,b,) } /* * call()方法调用函数 * 函数名.call(thisArg,arg1,arg2,…) * * 和apply()的区别在于提供参数的方式不同 */ fun.call(null,2,3,4);//2 3 4
Functionのバインドメソッド
Functionは、バインド関数と呼ばれる新しい関数を作成するために使用され、指定されたこの値をパラメータとして受け入れ、パラメータリストを受け入れます
var fun = function (a,b,c) { console.log( a,b,c) } /* bind方法->相当于复制一份当前函数 * 函数名.bind(thisArg,arg1,arg2,...) * thisArg->当绑定函数被调用时,该属性作为原函数运行时的this指向 * arg->参数。当绑定函数被调用时,这些参数将在实参之前传递给被绑定的方法 * */ var v =fun.bind(null,2,3,4); v();//2 3 4
オーバーロードはありません
other 開発言語では、関数にはオーバーロードと呼ばれる機能があります。つまり、同じ名前で複数の関数を定義しますが、各関数は異なる数のパラメーターを受け取ります。プログラムは、呼び出し中に渡される実際のパラメーターの数に基づいて、どの関数を呼び出すかを決定します。
1 つの JavaScript 内に関数の重複はありません。同じ名前の関数が複数定義されている場合は、最後に定義された関数のみが有効です。
arguments オブジェクト
オーバーロードはありませんが、JavaScript は関数のオーバーロード現象をシミュレートするために引数オブジェクトを提供します。
/* * argumengs对象 * *该对象存储当前函数中所有的参数(实参)->类数组对象 * *该对象一般用于函数中 * *作用-用于获取当前函数的所有参数 * *arguments.length->函数所有参数(实参)的个数*/ function fun() { var num = arguments.length; switch (num){ case 2://参数个数 return arguments[0]+arguments[1]; break; case 3: return arguments[0]+arguments[1]+arguments[2]; break; } } console.log(fun(4,5));//9 console.log(fun(4,5,6));//15
再帰
関数本体内で自分自身を呼び出す関数を再帰関数といいます。ある意味、再帰はループに似ています。どちらも同じコードを繰り返し実行し、無限ループと無限再帰を避けるために終了条件を必要とします。
関数本体で独自の関数を呼び出す方法は2通りあります
独自の関数名を使用する方法
引数オブジェクトのcallee属性を使用する方法
/*//无线递归 function fun() { console.log('23') fun()//调用自身函数,实现递归 } fun()*/ function fn(v) { console.log(v); if (v>=5){ return } /*fn(v+1)*///使用该方法终止递归当执行下列代码输出时,报错 arguments.callee(v+1) } /*fn(0)*/ var f = fn; fn=null; f(0);
匿名function
JavaScriptでは、関数をデータとして使用する場合、名前を設定する必要はありません。匿名関数の 2 つの使用法
匿名関数をパラメータとして他の関数に渡すことができます。
特定の 1 回限りのタスクを実行する匿名関数を定義できます。
コールバック関数
ある関数を別の関数の引数として使用する場合、引数として使用される関数をコールバック関数と呼びます。
//作为另一个函数参数的函数fun->回调函数 var fun = function () { return 2; }; function fn(v) { return v(); } /* var result=fn(fun);//函数fun作为函数fn的实参 console.log(result); */ //以上代码等同于以下代码 //以下代码中作为参数的函数->匿名回调函数 var f = fn(function(){return 2;}); console.log(f);
セルフチューニング関数
セルフチューニング関数とは、関数を定義した後に自分自身を呼び出す関数です
/* 自调函数->定义即调用的函数 * 相当于在匿名函数外加了小括号 * 第一对括号->定义函数 * 第二对括号->调用函数*/ (function () { console.log('23') })()//23->后边的括号表示调用
値としての関数
関数は、別の関数の結果として返されます。値として関数と呼ばれます
var one = function(){ return 100; } // 作为值的函数 -> 内部函数的一种特殊用法 function fun(){ var v = 100; // 内部函数 return function(){ return v; }; } var result = fun(); // console.log(result);// one函数 // console.log(result());// 100 console.log(fun()());
Closure
スコープチェーン
スコープチェーンは、ローカルスコープがその親がアクセスできるスコープにアクセスできることを意味します
var a = 10;// 全局变量 function fun(){ var b = 100;// fun函数作用域的局部变量 // 内部函数 function fn(){ var c = 200;// fn函数作用域的局部变量 // 内部函数 function f(){ var d = 300;// f函数作用域的布局变量 // 调用变量 console.log(a);// 10 console.log(b);// 100 console.log(c);// 200 console.log(d);// 300 } f(); // 调用变量 // console.log(a);// 10 // console.log(b);// 100 // console.log(c);// 200 // console.log(d);// d is not defined } fn(); // 调用变量 // console.log(a);// 10 // console.log(b);// 100 // console.log(c);// c is not defined // console.log(d);// d is not defined } fun();
Closure
内部の関数外部スコープから何らかの方法でアクセスすると、それはクロージャになります。
var n;// 定义变量,但不初始化值 function fun(){// 函数作用域 var v = 100; // 进行初始化值 -> 一个函数 n = function(){ console.log(v); } // n(); } fun(); n();// 100
クロージャの役割
共有ローカル変数を提供する
共有ローカル変数を保護し、変数の読み書きのための特別な関数を提供する
地球規模の汚染を回避する
関連推奨事項:
ECMAScript の関数型_javascript スキル
以上がjsの関数関数とは何ですか? jsでの関数の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。