声明不带值的全局变量

Declaring global variables without a value

本文关键字:全局变量 声明      更新时间:2023-09-26

我想创建一个嵌套全局变量的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
  }
}

但是我得到以下错误:

预期":"

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

如果您想将变量定义为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 undefined value:

变量未赋值时使用的原始值。

你需要为globalVarC指定一个值,否则json的javascript语法将是错误的,因为你没有任何值可以初始化,你可以给值undefined

undefined是一个全局变量,初始值undefined

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

您将希望undefined原语值为默认值:

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

void 0表达式给出undefined的值,无论undefined是否被"路由"。