在上課學迴圈的部分,有個地方不太懂
請問如果有個迴圈內容是
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