Javascript 未定义变量,在渲染方法中的if/else内部指定
我有一个简单的组件,可以从家长那里获得道具:Javascript 未定义变量,在渲染方法中的if/else内部指定,javascript,reactjs,Javascript,Reactjs,我有一个简单的组件,可以从家长那里获得道具: render(){ const {message} = this.props; if(message){ let {title, text} = message; } else { let title= 56; let text= 34; console.log('inside') console.log(title); }
render(){
const {message} = this.props;
if(message){
let {title, text} = message;
} else {
let title= 56;
let text= 34;
console.log('inside')
console.log(title);
}
console.log('outside');
console.log(lat);
return( // JSX) // The vars are not used
当我运行它时,消息
未定义,我在控制台中看到-内部
和54
。
紧接着是外部
和参考错误:未定义标题
。
如果我复制/粘贴title=56代码>外部if/else,一切正常。
对于所有情况下的调试,消息
未定义。
这是为什么?使用let定义的变量是块作用域,因此如果/else
块,它们将不存在于之外。您可以在if
/else
之前定义它们,然后在那里为它们赋值
class App extends React.Component {
render() {
const { message } = this.props;
let title, message;
if (message) {
title = message.title;
text = message.text;
} else {
title = 56;
text = 34;
}
return <>{/* ... */}</>;
}
}
类应用程序扩展了React.Component{
render(){
const{message}=this.props;
让标题、消息;
如果(信息){
title=message.title;
text=message.text;
}否则{
头衔=56;
文本=34;
}
返回{/*…*/};
}
}
@gdfgdfg不客气!没错,const
也是块范围的。