Почему я получаю неопределенную ошибку при вызове функции без параметра? - PullRequest
1 голос
/ 02 мая 2019

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

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

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

    }

    console.log(year)
  }

Ответы [ 6 ]

1 голос
/ 02 мая 2019

Ваша функция работает нормально - когда вы вызываете ее без аргументов, аргумент 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()
0 голосов
/ 02 мая 2019

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

function get_ostersonntag(year){
    if ((year == "") || (year == null)){
        year= new Date();
        year = year.getFullYear();
    }
    console.log(year)
}
0 голосов
/ 02 мая 2019

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

0 голосов
/ 02 мая 2019

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

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

    console.log(year)
  }

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

0 голосов
/ 02 мая 2019

вы можете попробовать

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

    }

    console.log(year)
  }
0 голосов
/ 02 мая 2019

Вы можете проверить, является ли year falsy , это такие значения, как пустая строка '', null, undefined, false, но также ноль 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));
...