2017-07-23 37 views
0

請看下面的代碼:Typescript:爲什麼內層函數不能解析外層函數的參數?

function myfunc(name: string): void { 
     var p = getPromise(**url**):Promise<string>; 
     p.then((data:string) => { 
      console.log(data); 
      console.log(name); 
     }); 
    } 

myfunc("John"); 

當我運行代碼,我得到以下錯誤:

Uncaught ReferenceError: name is not defined

我不明白爲什麼。箭頭函數位於大函數 'myfunc'中,因此,箭頭函數應該可以訪問包裝函數的變量。爲什麼在這種情況下不會發生?

+0

你需要傳遞一個承諾 – bigbounty

+4

內異步功能,這不是有效的JavaScript – marzelin

+0

你確定這是正確的javascript代碼? – Kermit

回答

0

我剛把p的聲明改成了更多的使用let的打字稿。其餘的應該是一樣的。

function myfunc(name: string): void { 
    let p:Promise<string> = getPromise(**url**); 
    p.then((data:string) => { 
     console.log(data); 
     console.log(name); 
    }); 
    return p; 
} 
+1

你改變了什麼?爲什麼?有什麼問題?請[編輯]你的答案,在代碼之外加入一個解釋。 – Bergi

+0

好的。更新它。 – harlandgomez

+0

'let' vs'var'在這裏沒有什麼區別,所以它不會解決問題。 – Bergi

相關問題