慕妹3242003
2023-03-24 16:22:01
在我提供我的 JavaScript 文件之前type="module",我可以在我用來(lái)返回它們的同一語(yǔ)句中定義我的變量。例子:function formatNameForFile(name) { return formattedName = name.toLowerCase().replace(/ /g, '-');}然而,一旦我添加type="module"到我的 JavaScript 文件中,我收到以下引用錯(cuò)誤:Uncaught ReferenceError: formattedName is not defined我可以通過(guò)在返回變量之前明確定義我的變量來(lái)消除這些錯(cuò)誤,如下所示:function formatNameForFile(name) { const formattedName = name.toLowerCase().replace(/ /g, '-'); return formattedName;}為什么是這樣?這些變量是否仍然可以通過(guò)初始 return 語(yǔ)句訪(fǎng)問(wèn),只要它們?cè)谄渲薪壎ǎㄊ褂胏onst、var或)?let
1 回答

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
ES6 模塊總是嚴(yán)格的。
JavaScript 模塊的全部?jī)?nèi)容自動(dòng)處于嚴(yán)格模式,無(wú)需聲明即可啟動(dòng)它。
在嚴(yán)格模式下,當(dāng)您嘗試分配給尚未定義的變量時(shí),會(huì)拋出錯(cuò)誤:
'use strict'; something = 'foo';
這就是您的模塊中發(fā)生的事情。由于變量名稱(chēng)尚未在函數(shù)內(nèi)部或其任何父范圍內(nèi)的任何位置定義,因此會(huì)引發(fā)錯(cuò)誤。
只要這些變量在其中綁定(使用 const、var 或 let),難道它們?nèi)匀豢梢酝ㄟ^(guò)初始 return 語(yǔ)句訪(fǎng)問(wèn)嗎?
當(dāng)然可以,但是您不能引用或分配給尚未初始化的變量。
但是沒(méi)有必要?jiǎng)?chuàng)建一個(gè)您將立即返回的變量。如果你愿意,你可以做
const formatNameForFile = name => name.toLowerCase().replace(/ /g, '-');
添加回答
舉報(bào)
0/150
提交
取消