声明不带值的全局变量
Declaring global variables without a value
我想创建一个嵌套全局变量的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
是否被"路由"。
相关文章:
- 如何将变量声明为全局变量
- 如何将变量声明为全局变量?用case foreach?Javascript
- 返回语句后的函数声明全局变量不会被覆盖
- 为什么Javascript代码打印'未定义'即使变量被声明为全局变量
- JavaScript 全局变量声明
- 如何从选择菜单选项动态声明全局变量
- 让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围
- 声明全局变量
- 由全局范围内的 Web 应用程序声明的全局变量
- 从函数内部声明一个全局变量
- 在 TypeScript 中使用外部模块声明一个全局变量
- 是否可以将 Ext.Component 声明为全局变量
- 是否有任何选项可以在煎茶触摸中声明全局变量
- 如何将值从一个函数传递到另一个具有对象的函数,而无需在 JS 中声明全局变量
- 如何在不声明全局变量的情况下将值从一个函数传递到另一个函数?
- 多个局部变量声明与一个全局变量声明
- 为什么第一个有效,第二个无效?全局和私有变量声明
- 在javascript responseText中将临时变量声明为全局变量
- 声明和定义全局变量作为函数结果有时有效
- 如何从函数内部声明全局变量