2009年12月、ECMAScriptはECMAScript 5をリリースしました。これは、以前のバージョンのECMAScript 3 Standardの最後のバージョンでリリースされていますが、ECMAScript 4は最終的に主要メーカーと関心に関連する組織に起因しています。この言語の複雑さ(つまり、ECMAScriptの機能を拡大するために多数の特性を高めるかどうか)と死亡し、プログラミングに大きく遅れている新しいECMAScript標準の策定を行います。 ECMAScript 5は、JSONのより包括的な制御を除いて、目標の観点からそれほど野心的ではありません。このモードでは、ECMAScriptの構文がより厳格になり、多くの一般的にメイドの簡単なコードが許可されなくなります。このモードは、スクリプトファイルまたは関数の最初の行に「Strictを使用」する限り非常に簡単です。
後に、2010年に、キーワードを使用して欠陥について議論するための短い記事も書いたことを知りました。
くさび
昔、神の故郷であるマ・リアンの故郷の故郷は彼の名前にちなんで名付けられました。 Ma Liangは辞任しませんでしたが、4つの言葉を作りました。何年も後、外国人がここに来て、この道で地元の人を止めました。
これはシェンマロードですか?
はい、これはシェンマロードです。
あなたも知りませんか?
私はこの人です、どうして私は知ることができませんでした。
これはシェンマロードですか?
あなたはあなたが尋ねることを知っています。
これがシェンマロードであることがわかりません。
これはシェンマロードだと言わなかったのですか?
もう一度言えますか?
ニンポ
その後、地元の人々はその年のマ・リアンの意見を思い出し、突然気づきました。 Ma Liangが話していること - 略語を使用しないでください。
質問
彼の中国人の友人、「私は夢を持っています。翌日、トムが隣人に侵入して逮捕されたので、彼は非常にはっきりと捕らえられました。ショップのCCTV。
問題は、トムが彼の夢を言ったとき、彼は
a)野心的なb)野心的ではないc)曖昧なd)
正しいangrはb)とc)です。
文章
古代および現代の中国と外国の上記の2つの例は、反射が曖昧さを引き起こすことがあると説明しました。これはJavaScriptにも存在します。時々、::などの長い変数を再生することは非常に厄介です
objectwithlongname1.propty1 = value1;
objectwithlongname1.propty2 = value2;
objectwithlongname1.propty3 = value3;
ObjectWithLongname1.method1();
しかし、明確な名前は、プログラムの読みやすさにとって非常に重要です。したがって、JavaScriptはステートメントを提供します。上記の例は書き直すことができます:
次のようにコードコードをコピーします。
with(objectwithlongname1){{
propty1 = value1;
propy2 = value2;
propy3 = value3;
method1();
}
これにより、キーボードに多くのカンフーが節約され、プログラムの構造がより明確になります。しかし、この略語は曖昧さを導入します。 JavaScriptの分析ルールは、最初にObjectWithName1でこれらの名前の属性を見つけることです。これは、コードによって説明されるものです。
次のようにコードコードをコピーします。
if(objectwithlongname1.property1!== undefined){
if(objectwithlongname1.value1!== undefined){
ObjectWithLongName1.Property1 = objectWithName1.Value1;
} それ以外 {
ObjectWithLongName1.Property1 = value1;
}
} それ以外 {
if(objectwithlongname1.value1!== undefined){
Property1 = objectWithLongname1.value1; //
} それ以外 {
Property1 = value1; // 4
}
}
私たちが望んでいるのは、これらの4つの可能性の1つですが、注意しなければ、プログラムは別の可能性を実行します。さらに、この執筆方法は、プログラムの読者を解決することも非常に困難です。一方、この不確実性は、JavaScriptインタープリターの言語のパフォーマンスにも影響します。
実際、わずかな改善を削除できる限り、これらの欠陥を削除することができます。オブジェクトの属性の前にポイント番号を追加して、属性と外部変数の間に直感的な区別があり、これを行う他の多くの言語があります。私たちの最初の例は次のようになります:
次のようにコードコードをコピーします。
with(objectwithlongname1){{
.propty1 = value1;
.propty2 = value2;
.propty3 = value3;
.method1();
}
JavaScriptがこのような改善を行う前に、2つの有害な力は軽いものであり、可能な限り声明を使用しないようにしなければなりません。まだいくつかの変更方法を採用することができます。
次のようにコードコードをコピーします。
var o1 = objectwithlongname1;
o1.prpty1 = value1;
o1.prpty2 = value2;
o1.prpty3 = value3;
o1.method1();
またはこの状況のために:
ObjectWithLongName1.Propty1 = objectWithLongName2.Propty1;
ObjectWithLongName1.Propty2 = objectWithName2.Propty2;
ニンポ
objectwithlongname1.propty10 = objectwithlongname2.propty10;
と書くことができます:
次のようにコードコードをコピーします。
(function(o1、o2、pl){
pl.foreach(function(it){o1 [item] = o2 [item];});
})(objectWithLongName1、objectWithLongName2、['Propty1'、 'propty2'、...、 'propty10'));