Nie jestem pewien, dlaczego, ale wydaje się, że nie mogę wywołać zmiennych let
lub const
, jeśli deklaruję je w oświadczeniu if/else
.Użyj else, aby zadeklarować `let` lub` const` do użycia po 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>
);
Jeśli użyję tego kodu, będzie to oznaczać, że classes is not defined
.
Ale jeśli mogę zmienić const
do var
klas jest zdefiniowane, ale pojawia się ostrzeżenie o classes used outside of binding context
i all var declarations must be at the top of the function scope
Jak mogę rozwiązać ten problem?
'let' i' const' zostały zaprojektowane w taki sposób, że mieszczą się w instrukcjach sterujących, takich jak 'if' i' for'. Jeśli chcesz użyć 'let', musisz zdefiniować zmienną przed' if' i po prostu przypisać ją do środka. – UnholySheep
jest to oczekiwane w większości języków programowania. starszy javascript nadal pozwoli ci uciec. Jeśli jednak jest to stała, wartość powinna być przypisana raz i nigdy się nie zmieniać ... zadeklaruj ją jako 'let' poza blokiem if i ustaw ją wewnątrz bloków if/else. – ps2goat
Dlaczego po prostu nie użyć * var *? – RobG