javascript権威ガイド
6419 ワード
1、対象
1.1、シリアルオブジェクト
JSON.stringify()と JSON.parseは、Javascriptオブジェクトをプログレッシブおよび復元するために使用されます.
2.1、push()とpop()
push()方法は、配列の末尾に1つ以上の要素を追加し、配列の新しい長さを返します.
pop()法は正反対で、配列の最後の要素を削除し、配列長を減らし、削除した値を返します.
注意:2つの方法は、元の配列を変更し、変更されたバージョンの新しい配列を生成するのではなく置換します.
map()メソッドは、呼び出した配列の各要素を指定された関数に伝達し、関数の戻り値を含む配列を返す.
filter()メソッドが返した配列要素は、呼び出した配列のサブセットである.伝達は論理判定のための関数です.trueまたはfalseを返します.
everry()とsome()の方法は、配列要素に指定された関数を適用して判定し、trueまたはfalseを返します.
3、関数
3.1、関数の呼び出しを関数として 方法として は構成関数として機能しています. は、それらのcall()とappy()の方法によって間接的に を呼び出す.
3.2、値の関数として
関数は定義できますが、呼び出しもできます.値でもあります.関数を変数に割り当てることができます.
関数の実行は変数のスコープに依存しています.このスコープは関数の定義により決定されます.このような語法のスコープを実現するためには、JavaScript関数オブジェクトは内部状態で関数のコード論理だけでなく、現在のスコープも参照しなければならない.関数オブジェクトは、作用領域チェーンを介して相互に関連し、関数体内の変数は、「クローズド」と呼ばれる機能領域に保存できます.
注:クローズドとは、関数変数がスコープ内に隠れているため、関数が変数を「包む」ように見えます.
例1:
例2:
1.1、シリアルオブジェクト
JSON.stringify()と JSON.parseは、Javascriptオブジェクトをプログレッシブおよび復元するために使用されます.
var o = {x:1, y:{z:[false,null,""]}}; //
var s = JSON.stringify(o); // s "{"x":1,"y":{"z":[false,null,""]}}"
var p = JSON.parse(s); // p o
2、配列2.1、push()とpop()
push()方法は、配列の末尾に1つ以上の要素を追加し、配列の新しい長さを返します.
pop()法は正反対で、配列の最後の要素を削除し、配列長を減らし、削除した値を返します.
注意:2つの方法は、元の配列を変更し、変更されたバージョンの新しい配列を生成するのではなく置換します.
var arr = []; // arr: []
arr.push( 1, 2 ); // arr: [1, 2] :2
arr.pop(); // arr: [1] :2
arr.push( [4, 5] ); // arr: [1, [4,5]] :2
arr.pop(); // arr: [1] :[4, 5]
arr.pop(); // arr: [] :1
2.2、map()map()メソッドは、呼び出した配列の各要素を指定された関数に伝達し、関数の戻り値を含む配列を返す.
var arrA = [1, 2, 3];
var arrB = a.map( function( x ) {
return x * x; // arrB = [1, 4, 9]
});
2.3、filter()filter()メソッドが返した配列要素は、呼び出した配列のサブセットである.伝達は論理判定のための関数です.trueまたはfalseを返します.
var arrA = [5, 4, 3, 2, 1];
var arrB = arrA.filter( function( x ) {
return x < 3; // [2, 1]
});
var arrC = arrA.filter( function( x, i ) {
return i % 2 === 0; // [5, 3, 1]
});
2.4、every()とsome()everry()とsome()の方法は、配列要素に指定された関数を適用して判定し、trueまたはfalseを返します.
3、関数
3.1、関数の呼び出し
3.2、値の関数として
関数は定義できますが、呼び出しもできます.値でもあります.関数を変数に割り当てることができます.
function square( x ) {
return x * x;
}
var s = square; // s square
square( 4 ); // 16
s( 4 ); // 16
3.3、クローズド関数の実行は変数のスコープに依存しています.このスコープは関数の定義により決定されます.このような語法のスコープを実現するためには、JavaScript関数オブジェクトは内部状態で関数のコード論理だけでなく、現在のスコープも参照しなければならない.関数オブジェクトは、作用領域チェーンを介して相互に関連し、関数体内の変数は、「クローズド」と呼ばれる機能領域に保存できます.
注:クローズドとは、関数変数がスコープ内に隠れているため、関数が変数を「包む」ように見えます.
例1:
var integer = (function() {
var count = 0;
return function() {
return count ++;
}
}());
すぐに呼び出す関数を定義しますので、この関数の戻り値は変数integerに与えられます.ネストの関数は、スコープ内の変数にアクセスでき、外部関数で定義されているcount変数にアクセスできます.外部関数が戻った後、他のコードはcount変数にアクセスできません.内部の関数だけがアクセスできます.例2:
function counter() {
var n = 0;
return {
count: function() {
return n++;
},
reset: function() {
return n = 0;
}
}
}
var c = counter(), d = counter();
c.count(); // => 0
d.count(); // => 0
c.reset(); // count() reset()
c.count(); // => 0
d.count(); // => 1