2016-04-27 38 views
-7

有人可以爲我分解這個腳本並告訴我結果是30105嗎?非常感謝你們JavaScript函數的錯誤結果(數學運算)

function one(numOneIn) { 

two(numOneIn * 3); //1x3 

document.write (numOneIn); //3 

} 

function two(aNumberIn) { 

document.write (aNumberIn); //1 

} 

function three(numIn) { 

one(numIn * 2); 

document.write (numIn); 

} 

three(5); 
+0

它實際上是 「30」 + 「10」 + 「5」 – Redu

+0

這些數字哪裏來的,雖然我不知道 – jonathonhub

+0

@jonathonhub,考慮到Stack Overflow是專業和發燒友程序員的用意,你可能會更好地使用一些JavaScript教程來學習語言。作爲一個noob沒有什麼可羞恥的,因爲每個程序員都在某個點或另一個點上,但通常希望SO用戶知道如何閱讀代碼。 – zzzzBov

回答

0

下面的代碼的合理格式化的版本,已經發布

1. function one(numOneIn) { 
2.  two(numOneIn * 3); 
3.  document.write(numOneIn); 
4. } 
5. function two(aNumberIn) { 
6.  document.write(aNumberIn); 
7. } 
8. function three(numIn) { 
9.  one(numIn * 2); 
10.  document.write(numIn); 
11. } 
12. three(5); 

讓我們來看看它是如何執行。

前幾組(1-4,5-7,8-10)定義爲function。直到被叫,他們纔會執行。

執行的第一行是three(5)(第12行)。

它調用行8上的three函數,將5的值傳遞給numIn參數。

執行的下一行是one(numIn * 2)(第9行)。

它呼籲線1one功能傳遞的10的值(5 * 2)到numOneIn參數。

執行的下一行是two(numOneIn * 3)(第2行)。

它稱5two函數將30(10 * 3)的值傳遞給參數aNumberIn

執行的下一行是document.write(aNumberIn)(第6行),它將'30'添加到DOM,因爲aNumberIn被轉換爲字符串。

第7行結束呼叫two

執行的下一行是document.write(numOneIn)(第3行),它將'10'添加到DOM,因爲numOneIn被轉換爲字符串。

第4行結束對one的呼叫。

執行下一行是document.write(numIn)(第10行),如numIn被轉換爲一個字符串這增加'5'到DOM。

第11行結束呼叫three

該腳本已完成執行。

DOM的最終狀態是一個字符串'30105'

2

3(5)

呼叫,通過5號,則:

酮(努敏* 2);

呼叫一個,通過5×2 => 10,則:

兩(numOneIn * 3)

呼叫,通過10×3 => 30,然後

兩個將「30」作爲字符串寫入文檔。

控制返回到一個,它將傳遞給它(10)的值作爲字符串寫入。

控制返回到三個,它將傳遞給它(5)的值作爲字符串寫入。

所以最後的字符串是「30105」。

0

two()寫30

one()寫10

three()寫5

document.write()沒有任何格式化光標所在行最後離開了這裏之後,將藉助頁面右側/寫。

如果你添加一些格式到document.write()你會明白我的意思。

嘗試前綴或後綴<br/>document.write()

EG:不是document.write (numOneIn);重寫它作爲document.write ("<br/>"+numOneIn);