[問題] 關於for迴圈的小問題

看板Ajax作者 (天空之子)時間5年前 (2018/09/03 21:20), 5年前編輯推噓2(2027)
留言29則, 6人參與, 5年前最新討論串1/1
在上課學迴圈的部分,有個地方不太懂 請問如果有個迴圈內容是 var i=0;i<tweets.length;i++){ tweetString = tweetString +"<p>"+tweets[i]+"</p>; } 迴圈會先執行tweetString = tweetString,第二次才會跑完全句是嗎? 我會這麼問是因在定義tweetString時如果寫var tweetString; 會跑出undefined的結果 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.196.84 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1535980810.A.1A4.html

09/04 00:59, 5年前 , 1F
var tweetString(宣告)=tweetString(undefined) + ...
09/04 00:59, 1F

09/04 01:00, 5年前 , 2F
tweetString才迴圈外宣告,並給初始值空字串
09/04 01:00, 2F

09/04 07:56, 5年前 , 3F
謝謝,但還是不懂,"tweetString才迴圈外宣告"是什麼意
09/04 07:56, 3F

09/04 07:58, 5年前 , 4F
思?不跑迴圈直接傳回tweetString的值?
09/04 07:58, 4F

09/04 08:07, 5年前 , 5F
這麼問好了,為什麼var tweetString;
09/04 08:07, 5F

09/04 08:08, 5年前 , 6F
和var tweetString = "";會讓迴圈執行結果不同?
09/04 08:08, 6F

09/04 12:18, 5年前 , 7F
var tweetString; 的時候 tweetString的值會是
09/04 12:18, 7F

09/04 12:18, 5年前 , 8F
undefined undefined加字串時會自動轉為"undefined"
09/04 12:18, 8F

09/04 17:20, 5年前 , 9F
undefined加了字串就不是undefined才對吧
09/04 17:20, 9F

09/04 17:22, 5年前 , 10F
加了字串等於有了定義才對吧
09/04 17:22, 10F

09/04 18:36, 5年前 , 11F
JS是動態型別語言,這叫coercion
09/04 18:36, 11F

09/04 18:36, 5年前 , 12F
undefined本身就是一種型別,是不能跟字串相加的
09/04 18:36, 12F

09/04 18:38, 5年前 , 13F
相加的時候JS會把undefined轉"undefined"字串去運算
09/04 18:38, 13F

09/04 19:36, 5年前 , 14F
照這邏輯應該是一直跑出undefined的迴圈才是啊,第一次
09/04 19:36, 14F

09/04 19:37, 5年前 , 15F
跑出undefined,第二次以後跑出字串,這是怎麼回事?
09/04 19:37, 15F

09/04 20:06, 5年前 , 16F
你要不要把迴圈每次運算完的結果印出來看看
09/04 20:06, 16F

09/04 20:08, 5年前 , 17F
等號是把右邊運算完assign給左邊
09/04 20:08, 17F

09/04 20:11, 5年前 , 18F
迴圈跑第一次之後tweetString就已經是字串了
09/04 20:11, 18F
我知道等號是把右邉運算完assign給左邊,但既然undefined+字串的結果是undefined, 第二次tweetString怎會是字串? 沒道理啊 ※ 編輯: purestone (61.231.189.251), 09/04/2018 20:54:04

09/04 21:01, 5年前 , 19F
undefined+字串的結果不是undefined.....
09/04 21:01, 19F

09/04 21:01, 5年前 , 20F
JS把undefined強制轉型成 "undefined"才去做相加
09/04 21:01, 20F

09/04 21:03, 5年前 , 21F
既然是字串加字串結果當然是字串
09/04 21:03, 21F
※ 編輯: purestone (61.231.189.251), 09/04/2018 21:04:52

09/04 21:04, 5年前 , 22F
建議你去查 javascript coercion
09/04 21:04, 22F
"undefined"+字串的結果是字串,那為什麼迴圈跑出來的結果是 undefined 字串A 字串B 字串C 字串..... 第一次不應該跑出undefined啊,因為右邊tweetString+字串後 assign 給左邊的 tweetString,跑出來的結果就應該是字串啊,但它第一次的結果是undefined,第 二次以後的結果才是字串,為什麼? ※ 編輯: purestone (61.231.189.251), 09/04/2018 21:11:11

09/04 21:17, 5年前 , 23F
你貼完整的code上來吧,這樣看不懂
09/04 21:17, 23F

09/04 21:19, 5年前 , 24F
至少我沒有跑出你這種結果
09/04 21:19, 24F

09/04 22:20, 5年前 , 25F
懂了,謝謝,仔細想想各位的回覆+google終於懂了
09/04 22:20, 25F

09/04 22:20, 5年前 , 26F
謝謝!!!
09/04 22:20, 26F

09/05 07:51, 5年前 , 27F
就只是一直沒看清 "undefined"(字串)跟undefined(型別)
09/05 07:51, 27F

09/05 07:51, 5年前 , 28F
不同 XD
09/05 07:51, 28F

09/05 09:01, 5年前 , 29F
這就是一直學不好JavaScript的地方,太神奇了XD
09/05 09:01, 29F
文章代碼(AID): #1RZJKA6a (Ajax)
文章代碼(AID): #1RZJKA6a (Ajax)