作者purestone (天空之子)
看板Ajax
标题[问题] 关於for回圈的小问题
时间Mon Sep 3 21:20:05 2018
在上课学回圈的部分,有个地方不太懂
请问如果有个回圈内容是
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://webptt.com/cn.aspx?n=bbs/Ajax/M.1535980810.A.1A4.html
1F:推 CloudyWing: var tweetString(宣告)=tweetString(undefined) + ... 09/04 00:59
2F:→ CloudyWing: tweetString才回圈外宣告,并给初始值空字串 09/04 01:00
3F:→ purestone: 谢谢,但还是不懂,"tweetString才回圈外宣告"是什麽意 09/04 07:56
4F:→ purestone: 思?不跑回圈直接传回tweetString的值? 09/04 07:58
5F:→ purestone: 这麽问好了,为什麽var tweetString; 09/04 08:07
6F:→ purestone: 和var tweetString = "";会让回圈执行结果不同? 09/04 08:08
7F:推 mrbigmouth: var tweetString; 的时候 tweetString的值会是 09/04 12:18
8F:→ mrbigmouth: undefined undefined加字串时会自动转为"undefined" 09/04 12:18
9F:→ purestone: undefined加了字串就不是undefined才对吧 09/04 17:20
10F:→ purestone: 加了字串等於有了定义才对吧 09/04 17:22
11F:→ InfinityGate: JS是动态型别语言,这叫coercion 09/04 18:36
12F:→ InfinityGate: undefined本身就是一种型别,是不能跟字串相加的 09/04 18:36
13F:→ InfinityGate: 相加的时候JS会把undefined转"undefined"字串去运算 09/04 18:38
14F:→ purestone: 照这逻辑应该是一直跑出undefined的回圈才是啊,第一次 09/04 19:36
15F:→ purestone: 跑出undefined,第二次以後跑出字串,这是怎麽回事? 09/04 19:37
16F:→ InfinityGate: 你要不要把回圈每次运算完的结果印出来看看 09/04 20:06
17F:→ InfinityGate: 等号是把右边运算完assign给左边 09/04 20:08
18F:→ InfinityGate: 回圈跑第一次之後tweetString就已经是字串了 09/04 20:11
我知道等号是把右邉运算完assign给左边,但既然undefined+字串的结果是undefined,
第二次tweetString怎会是字串? 没道理啊
※ 编辑: purestone (61.231.189.251), 09/04/2018 20:54:04
19F:→ InfinityGate: undefined+字串的结果不是undefined..... 09/04 21:01
20F:→ InfinityGate: JS把undefined强制转型成 "undefined"才去做相加 09/04 21:01
21F:→ InfinityGate: 既然是字串加字串结果当然是字串 09/04 21:03
※ 编辑: purestone (61.231.189.251), 09/04/2018 21:04:52
22F:→ InfinityGate: 建议你去查 javascript coercion 09/04 21:04
"undefined"+字串的结果是字串,那为什麽回圈跑出来的结果是
undefined
字串A
字串B
字串C
字串.....
第一次不应该跑出undefined啊,因为右边tweetString+字串後 assign 给左边的
tweetString,跑出来的结果就应该是字串啊,但它第一次的结果是undefined,第
二次以後的结果才是字串,为什麽?
※ 编辑: purestone (61.231.189.251), 09/04/2018 21:11:11
23F:→ InfinityGate: 你贴完整的code上来吧,这样看不懂 09/04 21:17
24F:→ InfinityGate: 至少我没有跑出你这种结果 09/04 21:19
25F:→ purestone: 懂了,谢谢,仔细想想各位的回覆+google终於懂了 09/04 22:20
26F:→ purestone: 谢谢!!! 09/04 22:20
27F:→ xdraculax: 就只是一直没看清 "undefined"(字串)跟undefined(型别) 09/05 07:51
28F:→ xdraculax: 不同 XD 09/05 07:51
29F:→ acer1832a: 这就是一直学不好JavaScript的地方,太神奇了XD 09/05 09:01