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

Why do I get an undefined error when calling a function without parameter?

我没有发现错误,我做错了什么?这一定是一个愚蠢而简单的理由......

在不带参数的情况下调用此函数时,应在以下代码中使用当前年份,但出现 'undefined' 错误

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

    }

    console.log(year)
  }

您可以检查 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));

你可以试试

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

    }

    console.log(year)
  }

更新您的 if 条件:

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

    console.log(year)
  }

只要年份有假值(undefined、null 或 ''),它就会进入 if 循环。

您的函数工作正常 - 当您不带参数调用它时,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()

谢谢大家。 原因是 .getFullYear

后缺少括号

你唯一漏掉的是 year = year.getFullYear

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