2016-08-19 67 views
-1

有人可以向我解釋答案是15嗎?我瞭解doSomething的功能範圍叫做doSomethingElse,但我得到的結果不是15。確定功能範圍的值

function doSomething(a) { 
    b = a + doSomethingElse(a * 2); 

    console.log(b * 3); 
} 

function doSomethingElse(a) { 
    return a - 1; 
} 

var b; 

doSomething(2); //15 
+0

你會得到什麼結果?我嘗試時會得到15。 – Pat

+0

我越來越18.你怎麼得到15? – Phoenox7

+0

step by step is @pat – Phoenox7

回答

1

這裏沒有涉及的範圍。任何這些變量都不會跨越示波器邊界:

1. doSomething(2); 
2. b = 2 + doSomethingElse(2 * 2); 
3. b = 2 + (2 * 2 - 1); 
4. b = 2 + 3 
5. b = 5; 
6. console.log(b * 3); 
7. console.log(5 * 3); 
8. console.log(15); 
9. 15 
+0

作用域指定一個域,其中包含一個變量或一組變量(或函數,或對象)具有價值。因此,範圍本身並不具有完全的值,也不正確地說「doSomething()的範圍調用了doSomethingElse()」。對於Marc的評論來說,doSomething()和doSomethingElse都在相同的範圍內:全局。 –