我不知道爲什麼,但如果我在if/else
聲明中聲明它們,我似乎無法調用let
或const
變量。如果else聲明`let`或`const`在if/else之後使用,則使用if?else?
if (withBorder) {
const classes = `${styles.circularBorder} ${styles.dimensions} ${styles.circularPadding} row flex-items-xs-middle flex-items-xs-center`;
} else {
const classes = `${styles.dimensions} ${styles.circularPadding} row flex-items-xs-middle flex-items-xs-center`;
}
return (
<div className={classes}>
{renderedResult}
</div>
);
如果我使用這段代碼,它說classes is not defined
。
但是,如果我改變const
到var
類的定義,但我得到一個警告約classes used outside of binding context
和all var declarations must be at the top of the function scope
我怎麼能解決這個問題?
'let'和'const'被設計爲在'if'和'for'等控制語句的範圍內。如果你想使用'let',你需要在'if'之前定義這個變量,然後把它分配給它。 – UnholySheep
在大多數編程語言中都是這樣。舊的JavaScript仍然會讓你擺脫困境。但是,如果它是一個常量,那麼該值應該被賦值一次並且永遠不會改變......將它聲明爲在if塊之外的'let'並將其設置在if/else塊內。 – ps2goat
爲什麼不只是使用* var *? – RobG