Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义属性时,javascript返回未定义的对象属性_Javascript - Fatal编程技术网

定义属性时,javascript返回未定义的对象属性

定义属性时,javascript返回未定义的对象属性,javascript,Javascript,我读过所有以前写的答案,但没有一个解决了我的问题 通过异步调用构建关联数组后,我将其传递给用于构建html元素的函数。关联数组具有指定的值,但当我尝试访问它们时,它们返回未定义的值 下面是登录到console的一段代码: var buildStreamerHtml = function(thisNameInfo){ console.log("buildHtml: "); console.log(thisNameInfo); console.log("status[]: " + thi

我读过所有以前写的答案,但没有一个解决了我的问题

通过异步调用构建关联数组后,我将其传递给用于构建html元素的函数。关联数组具有指定的值,但当我尝试访问它们时,它们返回未定义的值

下面是登录到console的一段代码:

var buildStreamerHtml = function(thisNameInfo){
  console.log("buildHtml: ");
  console.log(thisNameInfo);
  console.log("status[]: " + thisNameInfo['status']);
  console.log("status.: " + thisNameInfo.status);
以下是控制台日志:

buildHtml: 

Object
 logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/freecodecamp-profile_image-d9514f2df0962329-300x300.png"
 status: "Offline"
 title: "FreeCodeCamp"
 url: "https://www.twitch.tv/freecodecamp"
 userExist: "yes"
 __proto__: Object

status[]: undefined
status.: undefined
当我尝试访问thisNameInfo数组时,该数组中的每个键(徽标、状态、标题、url和userExist)都返回未定义

我做错了什么?如何访问键值

前面的一个答案建议访问如下: thisNameInfo[0]。状态 我尝试过它,但它给出了一个错误,因为thisNameInfo未定义为数组

以下是数组在开始时的初始化方式:

var thisNameInfo = {}; 
这是代码的一段,在这里赋值。同时创建关键点

return $.getJSON("https://wind-bow.glitch.me/twitch-api/channels/" + name,    
        function(dataChannel) {
          thisNameInfo.url = dataChannel.url;
          thisNameInfo.title = dataChannel.display_name;
          thisNameInfo.logo = dataChannel.logo;
        });  

下面是根据Bergi建议的链接:

我想你不知道“同时”是什么意思。显然,在“从异步调用构建关联数组之后”没有将对象传递给函数。如果您需要进一步的帮助,请发布完整的代码,特别是对返回ajax承诺的函数的调用和对
buildStreamerHtml
的调用。我猜这是一个顺序或时间问题。尝试从.getJSON回调调用BuildStreamRHTML。另外,JavaScript中没有关联数组。您正在处理一个对象。Hi Bergi,无论异步调用如何,当我记录整个数组或对象时,我都可以看到值。当我记录特定值时,它返回未定义的值。这两个动作同时发生。它们不是异步的。@Ivana只是返回
callLogo
callStream
。我用叉子叉了你的笔:@Ivana当你在
中没有返回值时,你基本上返回了
未定义的
。这意味着承诺已通过
未定义的
值解决。当您没有返回
callLogo
callStream
时,
callUser
then
立即被解析为
未定义的值。如果在
中返回一个
承诺
,那么它将有点像第一个承诺的连续性,因此第一个承诺在下一个承诺得到解决之前不会得到解决。