当前位置: 首页 > 面试题库 >

JavaScript-无法设置未定义的属性

宿洋
2023-03-14
问题内容

我的代码

var a = "1",
b = "hello",
c = { "100" : "some important data" },
d = {};

d[a]["greeting"] = b;
d[a]["data"] = c;

console.debug (d);

我收到以下错误:

Uncaught TypeError:无法设置未定义的属性“ greeting”。

我正在尝试做类似于关联数组的操作。为什么这不起作用?


问题答案:

您永远不会设置d[a]任何值。

因此,d[a]计算为undefined,您无法在上设置属性undefined

如果您添加d[a] = {}正确,d = {}事情应该会按预期进行。

另外,您可以使用对象初始化程序:

d[a] = {
    greetings: b,
    data: c
};

或者,您可以d在匿名函数实例中设置的所有属性:

d = new function () {
    this[a] = {
        greetings: b,
        data: c
    };
};

如果您在支持ES2015功能的环境中,则可以使用计算属性名称:

d = {
  [a]: {
    greetings: b,
    data: c
  }
};


 类似资料:
  • 我有这个代码: 谁能告诉我我错在哪里?

  • 当我使用set JavaScript时,我在构建portfolio页面时遇到了一个错误。目前正在使用Bootstrap,React Native和Material Ui 下面是我使用Set的代码示例:{[...new Set(resumedate.projects.map((item)=>item.tag))].map((tag)=>( ))} 保存后,我发现了这个错误:Module not fo

  • 我确实从NYTimes API中获取了数据,并在控制台上记录了它们。我的初始状态是{searchresponse:null},然后设置state the response this.setstate=({searchresponse:response.data});并将其传递给另一个名为ListView_Component的组件。在该组件中,我处理prop的null值。 但是来自API的响应没有推

  • 问题内容: 。 我有一个带有3个参数的函数。我遇到的问题是参数之一是对象的某个时值未定义的属性(即,它接收了 Thing.foo.bar ,而有时候Thing.foo 是未定义的,因此它无法访问 bar )。 有什么办法解决这个问题?在函数的声明中,我有一个条件检查:,但是浏览器(Chrome)仍然抛出错误,无法读取undefined 的 bar 属性。 问题答案: 如果一个对象的属性可以参考一些

  • 问题内容: 我正在尝试在使用包中设置路由,并且遇到以下问题 : 链接到图像:https : //postimg.org/image/v0twphnc7/ 我在中使用的代码 我设法确定的问题是,当我将投资组合定义为简单组件时,它可以工作。 但是,当我从Component扩展它时,就会出现错误: 您能解释一下“正常”组件和类组件之间的可能区别以及为什么出现以下错误。 问题答案: 假设您正在导入的正确,

  • 我在努力什么? 尝试在状态中设置输入类型文本的值 到目前为止我搜索了什么? 组件