o是一个空对象,当第一次循环时,你拿到的chars="a";此时,o对象是没有‘a’这个属性的。那么o.a就是undefined。所以进入了else里面,给o对象定义了属性a,并赋值1。
不应该是o[chars],这样chars表示的是序列号,你想检验的是o有没有chars这个属性,所以应该是o.chars。如果o.chars存在,则进行if里的语句,如果o.chars不存在,则进行else里的语句