2017-06-19 263 views
1

我遇到了函數語法的問題,當我調用函數並給出它的兩個參數字符串時,輸出始終未定義。我不明白爲什麼要這樣做,我也想知道這是否可以繼續進行堆棧交換的代碼審查部分,因爲它沒有bug。任何答案將不勝感激!函數參數返回undefined

function sm(name, location){ 
 
    console.log("Hello " + this.name + " from " + this.location); 
 
} 
 

 
sm("josh", "hawaii");

+2

'this.name'沒有了'name'您在參數中傳遞的'this'是指'Window'的'name'和'location'財產。只需使用'name'和'location'而不用'this'。 –

回答

0

無需使用this的功能參數。

function sm(name, location){ 
    console.log("Hello " + name + " from " + location); 
} 

sm("josh", "hawaii"); 
1

function參數不是函數的性質,所以你不能用this關鍵字訪問它們。

而在你的功能this將涉及全球window對象,編譯器會尋找window對象內這些屬性,如果沒有定義,他們將觸發一個例外。

只要寫:

console.log("Hello " + name + " from " + location); 

演示:

function sm(name, location){ 
 
    console.log("Hello " + name + " from " + location); 
 
} 
 

 
sm("josh", "hawaii");

0

function sm(name, location){ 
 
    console.log("Hello " + name + " from " + location); 
 
} 
 

 
sm("josh", "hawaii");

希望它可以幫助你

0

你不需要在這裏使用this這裏。只需要namelocation就足以將傳遞的變量作爲函數參數。

function sm(name, location){ 
 
    console.log("Hello " + name + " from " + location); 
 
} 
 

 
sm("josh", "hawaii");