javascript学習ノート(一)-廖雪峰教程
6320 ワード
一.基礎
1.for in、for ofとforEach
エルゴードはオブジェクトの属性であり、配列もオブジェクトであるため、その内部の要素の索引はその属性値であり、配列をエルゴードすることは、配列の各要素のインデックス値を取得することである(0から開始する).for ofは、集合中の要素値自体を巡回します.map、set、arrayはすべてiterableタイプのデータで、for ofで巡回できます.
二.関数
1.変数宣言の昇格
注意アップグレードされたのは声明であり、つまりvar宣言を通じて変数が宣言文に実行される前に使用された変数はエラーが発生しませんでしたが、この変数の値は取得できませんでした.アップグレードした時は賦値もアップしませんでした.この値はundefinedです.この文がこの変数の割当値になるまではundefinedです.
2.命名衝突を解決する方法
変数と関数を名前空間に置いて、実際には空のオブジェクトを定義しています.すべての変数と方法はこのオブジェクトの属性と方法として使用されます.
4.appyの使い方
関数の作用領域を変更することに加えて、既存の関数の挙動を変更することができます.すなわち、既に提供された関数のための新しい定義を追加します.例えば、統計的に何回かのパー秒Intを呼び出しました.
配列内の各要素に対してFunctionメソッドを呼び出し、結果を新しい配列として返します.元の配列は変わりません.パラメータ構成とforEach方法は似ています.
6.クローズド
一つの関数には、クローズドが含まれています.外部関数を呼び出すたびに、新しい内部関数が生成されます.つまり、閉じたパケットは外部関数の呼び出し時に新しく生成されます.
閉じたパケットを返すときに心がけるポイントは、戻り関数は循環変数を参照しないか、またはその後に変化する変数を参照しないことです.循環変数を参照しなければならない場合はどうすればいいですか?方法はもう一つの関数を作成し、この関数のパラメータで循環変数の現在の値をバインドします.このサイクル変数がその後どのように変更されても、関数パラメータにバインドされた値は変わりません.
以下のコードにおいて、パラメータnは、各iをバインドしている(活動対象に格納されているコンテンツには、イメージとその値が含まれており、内部のクローズドは、作用領域チェーンに沿って外部に直ちに実行される匿名関数アクティビティオブジェクトに格納される変数値を見つける).
三.標準オブジェクト
1.JSON、JavaScriptオブジェクトをJSONオブジェクトに変換する:
data対象の月は0から始まります.つまり0は1月を表します.
1.for in、for ofとforEach
エルゴードはオブジェクトの属性であり、配列もオブジェクトであるため、その内部の要素の索引はその属性値であり、配列をエルゴードすることは、配列の各要素のインデックス値を取得することである(0から開始する).for ofは、集合中の要素値自体を巡回します.map、set、arrayはすべてiterableタイプのデータで、for ofで巡回できます.
var oMap = new Map([['anna',1],['mike',2],['betty',3]]);
for(var x of oMap){
alert(x); //
}
さらに、最高の方法は、forEachを使用して、iterableタイプのデータを内蔵する方法forEachがあり、この方法はパラメータを受信し、要素を遍歴するごとにこの方法を呼び出す.var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element:
// index:
// array: Array
alert(element);
});
このようにして、mapタイプデータにおいて、ele対応値、index対応キーを巡回する.注意:forEach()メソッドはES 5.1標準で導入されています.ブラウザがサポートされているかどうかをテストする必要があります.二.関数
1.変数宣言の昇格
注意アップグレードされたのは声明であり、つまりvar宣言を通じて変数が宣言文に実行される前に使用された変数はエラーが発生しませんでしたが、この変数の値は取得できませんでした.アップグレードした時は賦値もアップしませんでした.この値はundefinedです.この文がこの変数の割当値になるまではundefinedです.
2.命名衝突を解決する方法
変数と関数を名前空間に置いて、実際には空のオブジェクトを定義しています.すべての変数と方法はこのオブジェクトの属性と方法として使用されます.
// MYAPP:
var MYAPP = {};
// :
MYAPP.name = 'myapp';
MYAPP.version = 1.0;
// :
MYAPP.foo = function () {
return 'foo';
};
3.ES 6は、ブロックレベルの作用領域内の変数を宣言するためにletを導入し、constは定数を宣言する.4.appyの使い方
関数の作用領域を変更することに加えて、既存の関数の挙動を変更することができます.すなわち、既に提供された関数のための新しい定義を追加します.例えば、統計的に何回かのパー秒Intを呼び出しました.
var count = 0;
var oldParseInt = parseInt; //
window.parseInt = function () {
count += 1;
return oldParseInt.apply(null, arguments); // ,null , this
};
// :
parseInt('10');
parseInt('20');
parseInt('30');
count; // 3
5.アラy.map(function(arg){}配列内の各要素に対してFunctionメソッドを呼び出し、結果を新しい配列として返します.元の配列は変わりません.パラメータ構成とforEach方法は似ています.
6.クローズド
一つの関数には、クローズドが含まれています.外部関数を呼び出すたびに、新しい内部関数が生成されます.つまり、閉じたパケットは外部関数の呼び出し時に新しく生成されます.
閉じたパケットを返すときに心がけるポイントは、戻り関数は循環変数を参照しないか、またはその後に変化する変数を参照しないことです.循環変数を参照しなければならない場合はどうすればいいですか?方法はもう一つの関数を作成し、この関数のパラメータで循環変数の現在の値をバインドします.このサイクル変数がその後どのように変更されても、関数パラメータにバインドされた値は変わりません.
以下のコードにおいて、パラメータnは、各iをバインドしている(活動対象に格納されているコンテンツには、イメージとその値が含まれており、内部のクローズドは、作用領域チェーンに沿って外部に直ちに実行される匿名関数アクティビティオブジェクトに格納される変数値を見つける).
function count(){
var f_arr=[];
for(var i=1;i<=3;i++){
var rs=(function(n){
return function(){
return n*n;
}
})(i); //
f_arr.push(rs);
}
return f_arr;
}
クローズドパケットは、実行を遅延させたり、関数プライベート変数にアクセスできる入口(クローズド状態)を提供したりすることができる.三.標準オブジェクト
1.JSON
JSON.stringify(JSobj,replacer,spliter)
replacer(key,value)は配列とすることができ、配列中の要素は変換時に保持するJSオブジェクトの属性であり、JSオブジェクトのキーパッド値に対して何らかの処理をした後に戻り、spliterは変換後のインデントなどの分割を行う関数でもあります.たとえば:function convert(key, value) {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
}
var xiaoJson=JSON.stringify(xiaoming, convert, ' ');
JSONオブジェクトはJSオブジェクトに逆順序化されました.function addClassmate(key, value){
if(key=="name"){
return value+" ";
}
return value;
}
var xiaoObj=JSON.parse(xiaoJson,addClassmate);
2.Dateオブジェクトdata対象の月は0から始まります.つまり0は1月を表します.