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