很普通的一段JS代码,但是却出现了很诡异的问题

代码如下,anchor是一个map结构,根据id获取anchor中的一个元素,打印anchor.get(id)没有问题,获取anchor.get(id)中存在的属性却是空的,这让我很不明白

    function sendLiveOffer(id) {
        console.log(id)
        console.log(anchor.get(id))
        console.log(anchor.get(id).localDescription)
        let sdp = anchor.get(id).localDescription
        let offer = {
            name: 'anchor',
            target: id,
            type: "video-offer",
            sdp: sdp
        }
        console.log('offer 已发出')
    }

图片描述

阅读 2.9k
4 个回答

如果你了解对象是引用类型你就不会疑惑了。

给你段代码参考,还不明白就没辙了:

var o = {a:1, b:{b1:"", b2:""}, c:"testing"};
setTimeout(()=>{o.b = {b1:"hello", b2:"world"}}, 100);
console.log(o);
console.log(o.b);

应该是异步的问题吧,再anchor.get(id).localDescription之后你修改了值。

属性是空的? 还是报错? 会不会是字符串?需要转一下
你typeof一下

clipboard.png

 let info = anchor.get(id);
 let desc = info.localDescription;

导一下试试?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题