Я не нахожу ошибку, что я делаю не так? Это должно быть глупой и очень простой причиной ...

При вызове этой функции без параметра в следующем коде должен использоваться текущий год, но я получаю ошибку 'undefined'

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

    }

    console.log(year)
  }
1
aejsi5 2 Май 2019 в 11:32

6 ответов

Лучший ответ

Единственное, что вы пропустили, это скобки после year = year.getFullYear

function get_ostersonntag(year){
    if ((year == "") || (year == null)){
        year= new Date();
        year = year.getFullYear();
    }
    console.log(year)
}
0
kalehmann 2 Май 2019 в 08:54

Ваша функция работает нормально - когда вы вызываете ее без аргументов, аргумент year неявно присваивается значению undefined. И undefined == null имеет значение true, поэтому блок if выполняется.

Я подозреваю, что вас смущает то, что вы вернули year.getFullYear, что является значением функции. Я думаю, что вы хотите вызвать эту функцию, чтобы получить результат:

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

    }

    console.log(year)
  }

get_ostersonntag()
1
Robin Zigmond 2 Май 2019 в 08:45

Вы можете проверить, являются ли year ложными, значения, такие как пустая строка '', null, undefined, false, но также ноль 0 и NaN, и проверьте, если {{X7} } не ноль.

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

console.log(get_ostersonntag());
console.log(get_ostersonntag(0));
0
Nina Scholz 2 Май 2019 в 08:43

Обновите ваше условие if:

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

    console.log(year)
  }

Всякий раз, когда год имеет ложное значение (undefined, null или ''), он будет идти внутри цикла if.

-1
SNag 2 Май 2019 в 08:38

Можешь попробовать

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

    }

    console.log(year)
  }
-1
Harish 2 Май 2019 в 08:35

Спасибо всем. Причиной были пропущенные скобки после .getFullYear

0
aejsi5 2 Май 2019 в 08:46