2014-01-23 277 views
1
function getRent(rent){ 
    var rent = 666; 
    return rent; 
} 
function show(){ 

getRent(); 
alert(rent); 
} 

爲什麼這不起作用?它出來作爲rent未定義?函數返回值返回爲undefined

+0

你爲什麼要將'rent'參數傳遞給'getRent()'? – Andy

+0

你應該閱讀這篇文章以更好地理解範圍。 http://stackoverflow.com/questions/500431/javascript-variable-scope – Smeegs

回答

3

此代碼有許多錯誤。

對於你正在通過在你的getRent函數中使用var關鍵字重新定義租金變量。

其次,當您調用getRent時,您不會將其返回值分配給任何內容,而且您正在有效地要求控制檯顯示未定義的變量。

你想要的是

function getRent(){ 
    var rent = 666; 
    return rent; 
} 

var rent = getRent(); 
alert(rent); 

或許

function getRent(rent){ 
    rent = 666; 
    return rent; 
} 

var param = 1; //sample variable to change 
var rent = getRent(param); 
alert(rent); 
1

您定義rentgetRent()而不是show()。所以rent沒有在你的情況下定義。

嘗試:

function getRent(rent){ 
    var rent = 666; 
    return rent; 
} 
function show(){ 
    alert(getRent("params")); 
} 
2

您還沒有分配的getRent()到任何東西的返回值。 rent僅在getRent函數中定義。

var rent = getRent(); 
alert(rent); 
1

您需要存儲getRent的返回值()。

function getRent(){ 
    var rent = 666; 
    return rent; 
} 
function show(){ 
    var theRent = getRent(); 
    alert(theRent); 
} 

如你預期它不工作的原因是因爲rent,裏面getRent定義,是不是功能的外部訪問。使用var關鍵字在函數內部聲明的變量只對同一函數內的其他代碼「可見」,除非您返回的值要存儲在其他位置的變量中。

它可以幫助您閱讀JavaScript中的函數和函數參數的基礎知識。這裏有一篇很好的文章:http://web-design-weekly.com/blog/2013/01/20/introduction-to-functions-in-javascript/