最近、外国のフロントエンドコードを見ると、ES6の新機能が非常に人気があり、特にLETが非常に一般的であり、アプリケーションが非常に一般的であることがわかりました。
LETの使用法はVARと同じですが、構文とセマンティクスとパフォーマンスの点で大幅に改善されています。以下のこれら2つの側面からそれを比較しましょう
構文>>
for(var i = 0; i <2; i ++){console.log( 'outer i:'+i); for(var i = 0; i <2; i ++){console.log( 'inner i:'+i);}}}これは一般的なネストされたループであり、すべてがカウントする変数Iを定義し、実行結果は次のとおりです。
外側I:0
内側i:0
内側I:1
Iの値が内部ループによって変更されるため、外側のループが中断されていることがわかります。通常の解決策は、内側のループで他の変数を使用することですが、誤ってエラーを引き起こす可能性があります
次に、varを変更します
for(let i = 0; i <2; i ++){console.log( 'outer i:'+i); for(let i = 0; i <2; i ++){console.log( 'inner i:'+i);}}}出力の結果は次のとおりです。
外側I:0
内側i:0
内側I:1outer I:1
内側i:0
内側I:1
それは正常であり、内側と外側の層には効果がありません。なぜなら、変数の範囲を独自のブロック内でのみにするからです。
例2
console.log(a); var a = 'hi';
出力の結果は未定義です。ログ(a)の実行は、変数を宣言する前です。なぜエラーがないのですか?これらの2つのコードの実際の効果は次のとおりです。
var a; console.log(a); a = 'hi';
JSコードを解析すると、変数宣言が開始位置に促され、これも混乱しています
代わりにLETを使用した後、問題はありません。また、エラーが直接報告されます。
console.log(a); // conged referenceError:aは定義されていませんa = 'hi';
パフォーマンスの簡単なテスト
var start = + new date(); for(var i = 0; i <1000000; i ++){var num = 123; var str = 'abc'; var obj = {key: 'value'}; var arr = ['bill'、 'dell'];} var end = + new date(); new.log(); console.log(end -start);Firefoxの下での平均実行結果は53msです
letに変更します
'Strict'Var start = + new Date(); for(var i = 0; i <1000000; i ++){let num = 123; let str =' abc '; let obj = {key:' value '}; let arr = [' bill '、' dell '];} var end = + new date();平均的な結果は5msで、スピードアップは明らかです
上記は、編集者が紹介したJavaScript6の新しい文法の利点です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!