我希望用嵌套变量创建一个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
}
}
但是我收到以下错误:
预期':'
如何在没有值的情况下声明此变量?
这是最佳做法还是有其他更好的解决方案?
答案 0 :(得分:12)
如果您想将变量定义为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
来自spec:
4.3.9未定义的值:
当变量尚未赋值时使用的原始值。
答案 1 :(得分:1)
你需要为globalVarC
指定一个值,否则json的javascript语法会出错,因为你没有任何值来初始化你可以给出值undefined。
undefined
是一个全局变量,原始值未定义。
var myObject = {
GlobalVars: {
globalVarA: "foo",
globalVarB: "bar",
globalVarC: undefined
},
myFunction: function(){
//do something
}
}
答案 2 :(得分:0)
您希望undefined
原始值为默认值:
var myObject = {
GlobalVars: {
globalVarA: "foo",
globalVarB: "bar",
globalVarC: void 0
},
myFunction: function(){
//do something
}
}
void 0
表达式的值为undefined
,无论undefined
是否已“重新路由”。