[问题] 关于for循环的小问题

楼主: purestone (天空之子)   2018-09-03 21:20:05
在上课学循环的部分,有个地方不太懂
请问如果有个循环内容是
var i=0;i<tweets.length;i++){
tweetString = tweetString +"<p>"+tweets[i]+"</p>;
}
循环会先执行tweetString = tweetString,第二次才会跑完全句是吗?
我会这么问是因在定义tweetString时如果写var tweetString; 会跑出undefined的结果
作者: CloudyWing (孤单ㄉ翼)   2018-09-04 00:59:00
var tweetString(宣告)=tweetString(undefined) + ...tweetString才循环外宣告,并给初始值空字串
楼主: purestone (天空之子)   2018-09-04 07:56:00
谢谢,但还是不懂,"tweetString才循环外宣告"是什么意思?不跑循环直接传回tweetString的值?这么问好了,为什么var tweetString;和var tweetString = "";会让循环执行结果不同?
作者: mrbigmouth (大嘴先生)   2018-09-04 12:18:00
var tweetString; 的时候 tweetString的值会是undefined undefined加字串时会自动转为"undefined"
楼主: purestone (天空之子)   2018-09-04 17:20:00
undefined加了字串就不是undefined才对吧加了字串等于有了定义才对吧
作者: InfinityGate (小鸟)   2018-09-04 18:36:00
JS是动态型别语言,这叫coercionundefined本身就是一种型别,是不能跟字串相加的相加的时候JS会把undefined转"undefined"字串去运算
楼主: purestone (天空之子)   2018-09-04 19:36:00
照这逻辑应该是一直跑出undefined的循环才是啊,第一次跑出undefined,第二次以后跑出字串,这是怎么回事?
作者: InfinityGate (小鸟)   2018-09-04 20:06:00
你要不要把循环每次运算完的结果印出来看看等号是把右边运算完assign给左边循环跑第一次之后tweetString就已经是字串了undefined+字串的结果不是undefined.....JS把undefined强制转型成 "undefined"才去做相加既然是字串加字串结果当然是字串建议你去查 javascript coercion你贴完整的code上来吧,这样看不懂至少我没有跑出你这种结果
楼主: purestone (天空之子)   2018-09-04 22:20:00
懂了,谢谢,仔细想想各位的回复+google终于懂了谢谢!!!
作者: xdraculax (首席怪叔叔)   2018-09-05 07:51:00
就只是一直没看清 "undefined"(字串)跟undefined(型别)不同 XD
作者: acer1832a (Mike)   2018-09-05 09:01:00
这就是一直学不好JavaScript的地方,太神奇了XD

Links booklink

Contact Us: admin [ a t ] ucptt.com