声明没有值的变量

时间:2013-03-20 12:31:53

标签: javascript variables global-variables

我希望用嵌套变量创建一个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
  }
}

但是我收到以下错误:

  

预期':'

如何在没有值的情况下声明此变量?

这是最佳做法还是有其他更好的解决方案?

3 个答案:

答案 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是否已“重新路由”。