[英]await outside of async function doesn't throw error in console
MDN說 :
請記住,
await
關鍵字僅在async
函數內有效。 如果在async
函數體外使用它,則會出現SyntaxError
。
但事實並非如此。
在DevTools控制台中嘗試此代碼,沒有錯誤,只是結果:
async function a(val) { return val; }
await a(10) // await is not inside async function
10
代碼或文檔有什么問題?
MDN文檔是正確的,它解釋了它在JavaScript中的工作原理。
這只是DevTools添加的一項功能,可讓您更輕松地測試異步/等待代碼。 它不是JavaScript功能。
看起來它自2017年8月11日起在DevTools中得到支持:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
如果你間諜了
在第129行,它們具有評估標記為異步的表達式的功能:
async evaluateCommandInConsole
沒有錯誤。
您已經找到了DevTools控制台的一個特殊功能 ! 它是讓盡可能簡單的實驗async
- await
實時環境中的代碼。 您可以想象您在控制台中輸入的任何代碼都會自動包裝在async
函數中。 事實上,正如另一個答案所指出的,這正是發生的事情。
重要的是要注意,即使這在控制台中有效,它也不是JavaScript的一個功能。
所以,你的所有觀察結果都是正確的和預期的! MDN文檔是准確的,因為如果您嘗試在async
函數之外使用await
的頁面上加載腳本,則會出錯。 另一方面,DevTools控制台旨在使其工作(專門用於開發人員工效學),因此您的代碼在控制台中運行時沒有任何錯誤。
這不是DevTools控制台的唯一技巧 。 通常,如果您真的想測試某些代碼在頁面上的運行方式,那么最好在頁面上實際運行腳本,而不是在控制台中運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.