2017-03-09 9 views
-3

違いがありますか?

ブロック1

var myObj = {} 

if(true){ 
myObj = { 
    name: "John", 
    age: 54, 
    phone: "33333" 
} 
}else { 
    myObj = { 
    code: "E233", 
    qty: "34" 
} 
} 

ブロック2

if(true){ 
var myObj = { 
    name: "John", 
    age: 54, 
    phone: "33333" 
} 
}else { 
    var myObj = { 
    code: "E233", 
    qty: "34" 
} 
} 

/他のif文の内部で変数このmyobjを宣言するという欠点があり、次のコードの例を見てみましょうか?

答えて

0

'var'がホイストされているので、技術的にあまり違いはありませんが、リファクタリングして1つの変数の名前を変更すると、ポップアップするリスクが1つあります。

1つの宣言だけを変更した場合、変更されていない宣言/割り当ては有効ですが使用されないため、スクリプトから期待される動作が表示されないことがあります。

変数を一度宣言して割り当ての名前の変更を忘れると、古い変数名がスコープ内で宣言されなくなってエラーが発生し、そのような間違いを簡単にキャッチして修正できます。

関連する問題