为什么在调用不带参数的函数时出现未定义的错误?

时间:2019-05-02 08:32:08

标签: javascript function undefined

我没有发现错误,我在做什么错?这必须是一个愚蠢且非常简单的理由...

在不带参数的情况下调用此函数时,应在以下代码中使用当前年份,但会出现“未定义”错误

function get_ostersonntag(year){
    if ((year == "") || (year == null)){
        year= new Date();
        year = year.getFullYear;

    }

    console.log(year)
  }

6 个答案:

答案 0 :(得分:1)

您的函数运行良好-当您不带任何参数调用它时,year参数将隐式分配给undefined值。并且undefined == null为真,因此执行了if块。

我怀疑让您感到困惑的是,您返回了year.getFullYear,这是一个函数值。我认为您实际上想调用此函数以获取结果:

function get_ostersonntag(year){
    if ((year == "") || (year == null)){
        year= new Date();
        year = year.getFullYear();

    }

    console.log(year)
  }

get_ostersonntag()

答案 1 :(得分:0)

您可以检查year是否为falsy,这些值是否为空字符串''nullundefinedfalse,但0也为零,NaN也为零,并检查year是否不为零。

function get_ostersonntag(year) {
    if (!year && year !== 0) {
        return new Date().getFullYear();
    }
    return year;
}

console.log(get_ostersonntag());
console.log(get_ostersonntag(0));

答案 2 :(得分:0)

非常感谢。 原因是.getFullYear

之后缺少括号。

答案 3 :(得分:0)

唯一遗漏的是year = year.getFullYear

之后的括号
function get_ostersonntag(year){
    if ((year == "") || (year == null)){
        year= new Date();
        year = year.getFullYear();
    }
    console.log(year)
}

答案 4 :(得分:-1)

您可以尝试

function get_ostersonntag(year){
    if (!year){
        year= new Date();
        year = year.getFullYear;

    }

    console.log(year)
  }

答案 5 :(得分:-1)

更新您的if条件:

function get_ostersonntag(year){
    if (!year) {
        year= new Date();
        year = year.getFullYear();
    }

    console.log(year)
  }

当年份的值伪造(未定义,null或”)时,它将进入if循环。