4 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
req应该是个异步请求,程序会先执行
var req那行,然后给req绑定两个事件,然后执行console.log(db);而这个时候db为空
等到访问数据库完成后,会执行onsuccess里面的函数。这时候db才会有值
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,当然就能输出一个对象了。
添加回答
举报
0/150
提交
取消