JavaScriptでVARを落とす理由


JavaScript言語は非常に多くの新機能がES 6で始まる最後のバージョンで導入された最後の数年間で進化しました.改善されたこれらの領域のうちの1つは、目標を達成するために用いる変数およびキーワードの宣言であるvar、let *、および* const.
この記事の前に、あなたのJavaScriptコードのVARの使用が問題で、代わりにletかconstを使用する理由について説明します.

The first reason why you should avoid using var in your javascript code is var has a poor definition of scope.


varはスコープ内で変数が再定義されないようにしますつまり、** varは同じスコープで1回以上の変数の定義を許容します.例
// jshint esversion:6
"use strict";
/* jshint node: true */
var target = 20;
console.log(target);
var target = 'twenty';
console.log(target);
この例では、数値のデータ型で初めて定義されているにもかかわらず、VARは同じスコープ内の文字列のデータ型で同じ変数を再定義することを許可していることを示します.
変数が同じ関数で再定義されている場合は特に大きな問題です.実際、JavaScriptはエラーとしてこれを認めないか、問題であるか誤ったコードを示しません.
意図が第2の変数に第1の変数を再割り当てすることになっていたならば、2回目の変数を再定義する理由がないはずです.これは基本的に最初の変数を消去し、2番目に置き換えます.

The second reason why using var in your javascript code may result in erroneous code is that var does not have block scope.


変数にVARを使用して変数を定義する場合、その変数のスコープは関数の範囲内にありますが、関数内でループを使用する場合などに制限が必要になる場合があります.
ループ内で定義された変数は、変数を宣言するためにVARが使用されている場合ではないループ内で動作するように絞り込まれるべきです.例
// jshint esversion:6
"use strict";
/* jshint node: true */
console.log(target);
console.log('entering the loop');
for (var i = 0; i < 4; i++) {
  console.log(target);
  var target = 'target' + i;

}
console.log('Exiting loop');
console.log(target);

この例では、変数(target)とloop index *(i)*の両方をVARで定義します.
変数はループ内で定義されます.ブロックスコープを持たないのは、変数のカプセル化が不十分であることを意味します.VARには、定義されたスコープに変数を制限する方法が悪いことを意味します.
ループ内で定義されていますが、コードコンソールを使用するときに、ループがBを開始する前に、変数ターゲットに既にアクセスできます.ログ(ターゲット);問題は、* * *浮気*と呼ばれる*基本的にVARはこの例のように宣言される前に変数の使用とアクセスを許可します.
この例でVARを使用すると、変数(target)とloop index(i)の両方が期待されるスコープ(ループ)の外で利用可能になります.
another postでは、JavaScriptのスタティックモードでのリンギングとランニングについて学びました.残念なことに、新しいJavaScriptのこれらの素晴らしい機能は、これらのシナリオでは、我々のコードでは、明らかに適用されません.
これの理由があります、そして、VARが今日まだ使用中である理由は同じです、VARの使用を除くことは古いJavaScriptエンジンの間の多くの互換性問題で起こります、そして、これは特に異なるブラウザーでJavaScriptコードを展開するとき、それは巨大な問題です.
あなたの開発経歴で前進して、JavaScriptの最新のバージョン(ES 6から)は、letとconstの2つの選択肢を導入しました.どのように、どのように2つを使用するかを学ぶには、見て、その後、このブログに従うか、私に従ってください、より多くのコンテンツがあなたの方法を流れていきます.
この記事を読むのに時間を割いてくれてありがとう.JavaScriptに関連する多くのヒントやポストは、途中であり、彼らが行うときに通知を取得するには、私に従って、私は本当に感謝します.あなたがより寛大に感じているならば、私は私にコーヒーを買うのを止めません.