老师您好,在6-6章节中,初始化功能有所不理解,请指教一下
来源:19-7 使用缓存实现文章收藏功能
 
			黑猫会咬人
2017-12-14
当在没有缓存,首次进入页面时,我点入第一篇文章,有初始化第一条缓存,并赋值false,但是点入第二个文章的时候,第二条缓存并没有初始化,没有赋值,返回的是undefined,麻烦能解释一下嘛。


3回答
- 
				
				当你点击第二个文章的时候,postsCollected 里面只有{0:fase}, 这时候postId = 2; 你代码中调postsCollected[postId] 也就是调postsCollected[2] ,因为里面没有2这个key,所以取不到,肯定是undefined。而且这个初始化是针对postsCollected为空的时候,当里面有{0:fase},其实走的是if语句。 012017-12-21
- 
				  一起玩137 2018-02-01 老师这方法有个小小的bug 首先描述一下老师原本的逻辑: 第一步:获取缓存集 第二步:判断缓存集是否存在 如果postsCollected缓存集存在,那么就获取缓存集中对应的id号,前端状态变量collected就为真,显示图标已收藏 否则,就是缓存集不存在,那么就先创建一个空的缓存集,将当前文章缓存状态先设置为false,存入缓存集。collected默认为false 这里面的问题是:如果缓存集存在,但是对应的id号不存在呢?获取不到对应的id号,那么postCollected就会被认为是undefine,出现错误。 因此,我的修改是,postCollected应该在判断语句前定义好,然后在if条件语句(判断缓存集是否存在)中再嵌套一个if条件语句(判断是否存在对应的id号),如果有更好的办法请及时告知,非常感谢。 步骤更改如下: 第一步:获取缓存集 第二步:获取缓存文章id 第三步:判断缓存集是否存在 如果缓存集存在 继续判断对应的id值是否存在(存在 设置collected调节前端收藏状态; 不存在 设置当前文章的缓存为false) 缓存集不存在 创建一个空的缓存集对象 设置当前文章缓存为false 备注:collected不设置就默认为false  222018-03-07 222018-03-07
- 
				  慕虎5376285 2018-02-03 视频里 老师应该没有对onload进行测试,直接去测试收藏按钮了,所以没有发现这个问题,我是加了一层判断有没有对应id的缓存记录,就行了 00
相似问题
 
						 
						
