数组中有值,但无法访问它们,这可能是什么问题?

我通过一个回调函数得到两个值(字符串),假设这两个值是a和b,所以现在我将这些值压入数组。当我console.log这个数组时,只有当我通过单击箭头符号扩展数组时,它才会显示这些值。当我尝试访问索引值时,它说未定义。所以我猜有一个问题函数调用吗?


funcOuter() {

    let newList =[];

    this.calledFunc(function (param) {

        newList.push(param);

    });

    console.log(newList[1]);

}


实际输出:


不明确的


预期产量:


123.234.556


万千封印
浏览 233回答 3
3回答

Qyouu

最好的办法是可视化代码执行:堆栈S堆H队列Q执行时,将您funcOuter放在S上与分配,函数调用和日志一样:小号:funcOuter,let newList =[];分配已执行...小号:funcOuter,this.calledFunc(callback);函数被执行...小号:funcOuter,this.calledFunc(callback);,calledFunc inner block内部块和异步完成小号:funcOuter,console.log(newList[1]),问:possible async calls日志完成:小号:funcOuter,问:possible async calls外部完成:S:问:possible async calls从Q填充堆栈:小号:callback,问:possibly more async calls推送被执行:小号:callback,push等等;) 事件循环因此,将您的代码更改为:funcOuter() {    let newList =[];    this.calledFunc(function (param) {         newList.push(param);         newList[1] && console.log(newList[1]);     });}

饮歌长啸

如果您使用angular 2+,为什么具有回调功能,我认为这是一个解决方案。export class AchievementComponent implements OnInit {  constructor() { }  ngOnInit() {  }  async funcOuter() {    let newList =[];    const param = await this.funcInner();    newList.push(param);  }  funInner() {    return new Promise((resolve, reject)=>{      this.calledFunc((param)=>{         resolve(param);      })    })  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript