我希望创建一个嵌套变量的
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 } }
但是我收到以下错误:
Expected ‘:’
如何在没有值的情况下声明此变量?
这是最佳做法还是有其他更好的解决方案?
解决方法
如果要将变量定义为GlobalVars的属性,则必须为它们显式指定undefined
GlobalVars: { globalVarA: "foo",globalVarC: undefined },
您的代码包含无效表示法,使用对象文字表示法时,您必须为每个变量指定一个值.这与XML或formParams等其他符号不同,您可以在不设置属性/属性的情况下声明属性/属性.
注意,在我的解决方案中,未定义的变量确实得到一个默认值 – 该值只是未定义的原始值,这是默认情况下未定义的变量返回的值.
但是,如果执行globalVarC:undefined,则会定义变量
GlobalVars.globalVarC;//undefined GlobalVars.globalVarX;//undefined GlobalVars.hasOwnProperty("globalVarC");//true GlobalVars.hasOwnProperty("globalVarX");//false
从spec:
4.3.9 undefined value:
primitive value used when a variable has not been assigned a value.