我不知道为什么,但如果我在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