Javascript 未定义let变量

Javascript 未定义let变量,javascript,reactjs,Javascript,Reactjs,我上面的代码有什么问题?如果to为空,则至少为to_date分配一个空值,但我得到了to_date的错误,该错误是未定义的错误。为什么?不能将相同的变量名与let关键字一起使用。如果您尝试这样做,它将抛出错误 相反,您必须使用三元运算符: function formatToStandardizedDate(from, to){ const from_date = moment(from); if(to){ let to_date = moment(to);

我上面的代码有什么问题?如果
to
为空,则至少为
to_date
分配一个空值,但我得到了
to_date
的错误,该错误是未定义的错误。为什么?

不能将相同的变量名与let关键字一起使用。如果您尝试这样做,它将抛出错误


相反,您必须使用三元运算符:

function formatToStandardizedDate(from, to){

    const from_date = moment(from);

    if(to){
        let to_date = moment(to);
    }else{
        let to_date = null;
    }
}

console.log(formatToStandardizedDate("2017-04-19 00:00:00",null))
或者在函数中声明一次并更新变量

let to_date = to ? moment(to) : null;
函数格式到标准化数据(从,到){
const from_date=时刻(从);
let to_date=null;//用null初始化变量
若(至)

to_date=moment(to);//不能将相同的变量名与let关键字一起使用。如果尝试这样做,它将抛出错误


相反,您必须使用三元运算符:

function formatToStandardizedDate(from, to){

    const from_date = moment(from);

    if(to){
        let to_date = moment(to);
    }else{
        let to_date = null;
    }
}

console.log(formatToStandardizedDate("2017-04-19 00:00:00",null))
或者在函数中声明一次并更新变量

let to_date = to ? moment(to) : null;
函数格式到标准化数据(从,到){
const from_date=时刻(从);
let to_date=null;//用null初始化变量
若(至)

截止日期=时刻(截止日期);//with let不能使用相同的变量名称。如果要在块外使用,则需要在块外定义
let
。to_date
在哪里使用?with let不能使用相同的变量名称。如果需要,则需要在块外定义
let
在块外使用它。你在哪里使用
来确定日期?但是它也可能是一个
常量。但是我猜常量不能更新为新值。请注意,else子句是完全不必要的,你可以初始化
let to_date=null;
,并且只有在第二个参数为truthy
if(to)时才更改它截止日期=时刻(截止日期)
。无论如何,我还是更喜欢你的三元示例。@JaredSmith完全同意你的观点。但是,它也可能是一个
常量
。但我猜常量不能更新为新值。请注意,else子句完全没有必要,你只需初始化
let to_date=null;
并仅在第二个参数为如果(to)to_date=moment(to);
,我还是喜欢你的三元例子。@JaredSmith完全同意你的观点。