8

一部の変数にデフォルト値が指定されていない、ネストされた変数を持つ Javascript オブジェクトを作成したいと考えています。

私は現在これを持っています:

var globalVarA = "foo";
var globalVarB = "bar";
var globalVarC;

function myFunction(){
  //do something
}

これを次のように変更したい:

var myObject = {
  GlobalVars: {
     globalVarA: "foo",
     globalVarB: "bar",
     globalVarC
  },
  myFunction: function(){
     //do something
  }
}

ただし、次のエラーが表示されます。

期待される ':'

この変数を値なしで宣言するにはどうすればよいですか?

これはベストプラクティスですか、それとも別のより良い解決策がありますか?

4

3 に答える 3

13

変数をプロパティとして定義する場合は、変数GlobalVarsに明示的に割り当てる必要がありundefinedます

GlobalVars: {
     globalVarA: "foo",
     globalVarB: "bar",
     globalVarC: undefined
  },

コードに無効な表記が含まれていました。オブジェクト リテラル表記を使用する場合は、変数ごとに値を指定する必要があります。これは、設定せずに属性/プロパティを宣言できる XML や formParams などの他の表記法とは異なります。

undefined私のソリューションでは、未定義の変数はデフォルト値を取得することに注意してください。その値は、定義されていない変数に対してデフォルトで返されるプリミティブ値です。

ただし、そうすると変数定義されますglobalVarC: undefined

GlobalVars.globalVarC;//undefined
GlobalVars.globalVarX;//undefined
GlobalVars.hasOwnProperty("globalVarC");//true
GlobalVars.hasOwnProperty("globalVarX");//false

仕様から:

4.3.9 未定義の値:

変数に値が割り当てられていない場合に使用されるプリミティブ値。

于 2013-03-20T12:33:12.430 に答える
1

値を指定する必要があります。globalVarCそれ以外の場合、json の JavaScript 構文は間違っています。初期化する値がないため、値undefinedを指定できます。

undefinedプリミティブ値undefinedを持つグローバル変数です。

var myObject = {
  GlobalVars: {
     globalVarA: "foo",
     globalVarB: "bar",
     globalVarC: undefined
  },
  myFunction: function(){
     //do something
  }
}
于 2013-03-20T12:33:45.113 に答える
0

undefinedプリミティブ値をデフォルト値にする必要があります。

var myObject = {
  GlobalVars: {
     globalVarA: "foo",
     globalVarB: "bar",
     globalVarC: void 0
  },
  myFunction: function(){
     //do something
  }
}

が「再ルーティング」されたかどうかに関係なく、void 0式は の値を返します。undefinedundefined

于 2013-03-20T12:43:52.293 に答える