JavaScript 関数式の学習を開始し、以下を注意深く読んでください。
1. 関数を作成する一般的な形式では、コードを実行する前に関数宣言が読み取られるため、関数宣言は関数呼び出しの下に記述できます。
sayHi(); function sayHi(){ alert("Hi!"); }
sayHi(); //错误!!函数不存在 var sayHi=function(){ alert("Hi!"); }
一般再帰
function factorial(num){ if (num <= 1){ return 1; } else { return num * factorial(num-1); } }
arguments.callee は実行される関数へのポインタであり、再帰の実装に使用できます。
function factorial(num){ if (num <= 1){ return 1; } else { return num * arguments.callee(num-1); } }
クロージャは、別のスコープ 内の変数にアクセスできる関数を指します)。
クロージャを作成する一般的な方法は、別の関数の中に関数を作成することです。関数が実行されると、実行環境と対応するスコープ チェーンが作成されます。クロージャは、それを含む関数内の変数の最後の値のみを取ることができます:
function createFunctions(){ var result = new Array(); for (var i=0; i < 10; i++){ result[i] = function(){ return i; }; } return result; } var funcs = createFunctions(); //every function outputs 10 for (var i=0; i < funcs.length; i++){ document.write(funcs[i]() + "<br />"); }
次のように変換できます:
function createFunctions(){ var result = new Array(); for (var i=0; i < 10; i++){ result[i] = function(num){ return function(){ return num; }; }(i); } return result; }
5. このオブジェクト
以下のように:
function outputNumbers(count){ for (var i=0; i < count; i++){ alert(i); } alert(i); //count } outputNumbers(5);
匿名関数の構文 (プライベート スコープの作成):
(function(){ //这里是块级作用域 })();
一時的に変数が必要な場合は、プライベート スコープを使用できます:
function outputNumbers(count){ (function () { for (var i=0; i < count; i++){ alert(i); } })(); alert(i); //causes an error }
7. プライベート変数
関数内で定義されたパラメーター、ローカル変数、およびその他の関数はすべて関数のプライベート変数です。例:
function add(num1,num2){ var sum = num1 + num2; return sum; }
特権メソッドはプライベート変数にアクセスできます。簡単に言えば、式を使用してそれにクロージャを与え、クロージャ内の他の関数にアクセスします。
function Person(name){ var a=0; this.getName = function(){ return name + a; }; this.setName = function (value) { name = value; }; }
以上がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。