作者ephesians (ephesians)
看板Ajax
標題Re: [問題] javascript 遞迴函式的問題
時間Sat Jul 28 04:42:06 2007
※ 引述《KiroKu ()》之銘言:
: 我寫了個function他是用遞迴的方式在跑的
: 他自己會呼叫自己0~8次不等
: 最後是會自己停
: 但是我發現他最後幾次少掉了
: 而且行為很奇怪
: 照理講在第一層呼叫的時候 會產生8次
: 第1或2次的時候可能會再進到下一層
: 到最後下層執行完 也應該再把第一次那些後面的遞迴一樣跑完才是
: 可是似乎沒有....orz
: 我是用for去呼叫
: for(k=0;k<2;k++){
: }可是我除錯時用alert()發現他的k變成3 4之類的
: 這難道式因為javascript的變數都是全域的關係嗎?
剛開始看到這問題,我的感覺是:
1.這問題描述的很模糊,你說它好像不會做,這是什麼意思?
難道你可以說,一個指定命令 var a = 5; 這行程式可能沒做正確的指定嗎?
2.你都沒有講講你的程式大概是怎麼寫的,函式內有哪些東西,函式外又有哪些東西.
就這樣子,你說程式跑得好像很怪.
除了你自己之外,誰知道你的問題是什麼?
這樣變成你只是在抱怨,而不是在發問.
3.行文中有二樣錯誤假設:(1)程式執行次數無故變動;(2)JS變數都是全域變數.
其實你的程式出問題,不是JavaScript程式語言本身有問題,
而是你怎麼寫這程式的問題.
所以提示你,如果人家回答你這問題,回答"似乎沒答案",你高不高興?
因為你沒在發問,只是自行猜測"似乎沒有做",那請問你想得到什麼答案?
要人家點頭說 "對,它本來就似乎不會做" 嗎?
更扯的是你早就假定答案是"變數都是全域變數",
後來你的論斷竟然是 "對,是全域的問題".
真是新發現啊!
全域變數,區域變數,本來有很重要的區別,現在突然沒有全域與區域的差別了...(驚)
你確定要用這樣的斷言誤導他人嗎?
你還是仔細看看你程式與變數的安排,確認之前的問題是在哪邊吧.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.226.22
推 KiroKu:也許我表達的不太好 不過是跟問題是跟全預變數有關 07/28 09:02
→ KiroKu:如果你看不懂就直接說我說得不清楚 你降回答我反而覺得奇怪 07/28 09:03
推 ephesians:那你就要先自己講問題講明,而不是留一堆話讓人猜 07/28 15:43
→ ephesians:我知道我講得奇怪,但原因是你問得奇怪 07/28 15:44
→ ephesians:自己問題不直接講,卻要求回應者直接講,是不是很奇怪? 07/28 15:46
推 fillano:說真的問題並沒講清楚,我想ephesians說得並不算過份 07/29 12:28
推 Jimmy0821:的確,問題的描述完全沒有辦法提供線索,而像呢喃自語 07/30 21:04
→ Jimmy0821:既然打算要PO文提問,那就應該把事情原委清楚得描述出來 07/30 21:06