for in 实验出的小机制

那么问题来了,为什么第二次遍历时,能打印出来c,却不能打出来c的内容呢?

A同学辩解:如果第一次循环o被a覆盖了,那么现在循环条件里的o应该指的a吧,所以c被打印出来都不应该呢?

B同学:你得分清局部的和全局的。

A同学继续辩解:但是o有两个对象,如果循环时o被覆盖,是不可能打印出来c的。

B同学:所以只能说for in循环一开始就把o分解了,自个存好,自个等待运行。

C同学有点不耐烦:行了,咱们再做做实验吧。

A同学有点小落寞:o都没了还能打印,看来确实是执行了两次。

C同学安慰:别急,干脆看看for循环的条件。

 

B同学:嗯嗯,条件一改变,循环立即终止,很干脆呀。

B同学见大家沉默:这能否说明for in循环里,循环的次数在刚开始循环的时候就判定了,一旦循环开始,for in循环次数不受其他因素影响。

A同学终于开口:对,这两个循环机制本来就不一样。

C同学:也就是说,for in一开始,就把所有的属性都给存起来了,并且确定好循环次数;那么在第二次循环的时候,还是能打印出来c,但是此时o已经被a:{b:1}覆盖了,a里面是没有c这个属性的,所以能打印出来c的内容才怪嘞。

 

二师弟说:你怎么看呢?

猜你喜欢

转载自www.cnblogs.com/miniSkytrue/p/12333488.html
今日推荐