为了账号安全,请及时绑定邮箱和手机立即绑定

console.log输出的是undefined

console.log输出的是undefined

青春有我 2019-04-18 14:15:25
初学!求答案或给些提示
查看完整描述

4 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

req应该是个异步请求,程序会先执行
var req那行,然后给req绑定两个事件,然后执行console.log(db);而这个时候db为空
等到访问数据库完成后,会执行onsuccess里面的函数。这时候db才会有值

查看完整回答
反对 回复 2019-05-13
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

首先,你知道异步请求是什么意思么?就像你妈做饭的时候发现家里没米了,然后让你去买米。你就出去买米了,而你妈这个时候去炒菜了。这个就是异步。而一般程序的执行是类似同步请求的,就是你去买米,而你妈什么事都不干,就坐家门口等你回来。

我们再来看程序,首先你妈要执行 var db;定义了一个变量,由于没有初始化,所以他是undefined。接着执行var req那行。然后req.onsuccess req.onerror就是给req绑定两个事件,成功时会执行onsuccess后面的函数,失败后会执行onerror后面的函数。这个时候就相当于你妈让你去买米,然后你就去了。但这个时候你妈接着干后面的事,就是输出db,但当时你又没回来,所以db这个时候还是undefined。

过了一会,你回来了,并且成功买到了米,你把你买的米和一些其他的东西一起给你妈,给的东西就是evt,然后你妈接着执行db=this.result,这个时候由于this.result有值,所以db也有值了,然后你妈输出db,当然就能输出一个对象了。

查看完整回答
反对 回复 2019-05-13
?
慕斯709654

TA贡献1840条经验 获得超5个赞

给db赋值对象 db = {}


查看完整回答
反对 回复 2019-05-13
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

要明白异步和同步的概念;熟悉js的代码的执行顺序和执行时间


查看完整回答
反对 回复 2019-05-13
  • 4 回答
  • 0 关注
  • 1721 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信