2013-07-03 64 views
3

我想我的函數返回一個錯誤代碼和一個字符串值,所以計劃使用return返回錯誤代碼並使用參數返回字符串值。但它不起作用。看起來我們不能從函數參數中返回一個值。任何想法如何從函數參數返回它?可能從JavaScript函數參數返回一個值嗎?

下面是一個示例代碼。我希望從sayHello的參數中獲得retVal。

function sayHello(name, retVal) { 
    retVal = "hello " + name; 
    return 1; 
} 

回答

9

你也許可以這樣做,傳回一個對象。

function sayHello(name) { 

    retVal = "hello " + name; 
    return {code: 1, message: retVal}; 
} 

//And while calling 
var returnVal= sayHello("something"); 
var code = returnVal.code; 
var msg= returnVal.message; 

爲什麼retVal在外面可用的原因是因爲在函數內的範圍內變量提升。但是你也可以通過不傳遞它作爲參數來解決這個問題。

var retVal; //Define it in an outer scope. 
function sayHello(name) { 
    retVal = "hello " + name; 
    return 1; 
} 
var returnVal= sayHello("something"); 
alert(returnVal); 
alert(retVal); //Now get it here. 
+0

感謝PSL什麼,我會採取第一種方法。 – zhongzhu

+0

@zhongzhu歡迎您..不錯的選擇.. :) – PSL

2

PSL的解決方案是最好的,但如果你真的想知道如何通過參數返回它,唯一的辦法就是使用一個對象,因爲對象是通過引用傳遞的,不可複製的(請注意,數組是對象):

var hello = []; 
sayHello("Paul", hello); // "hello[0] === "hello Paul" 

function sayHello(name, retVal) { 
    retVal[0] = "hello " + name; 
    return 1; 
} 
+1

要做到這一點與一個對象,而不是一個數組(不要更好,沒有更壞),你會'var hello = {};'和'redVal.message =「你好「+名字;' – Jeff

相關問題