Функция не проверяет номер телефона

Я хочу проверить номер (var phone). Он должен быть действительным, если содержит от 7 до 8 символов, один из которых МОЖЕТ быть тире (-). Если число больше 8 или меньше 7 символов, функция должна вернуть false (очевидно, это не так). В чем проблема? Что бы я ни назначал var phone, console.log показывает, что все верно. Кстати, я новичок в JavaScript.

var phone = "123-56";

function validate(phoneNumber) {
    if (phoneNumber.length > 8 ||
        phoneNumber.length < 7) {
        return false;
    }
var vals = phoneNumber.split("-");

if (isNaN(vals[0]) || isNaN(vals[1])) {
    return false;
}
return true;
}

if (validate) {
console.log("The number " + phone + " is valid.");
} else {
console.log("The number " + phone + " is NOT valid.");
}

person Rusletov    schedule 16.05.2017    source источник
comment
if (validate) проверяет, существует ли функция validate, что, очевидно, существует. Вы имеете в виду if (validate(phone)). validate(phone); сам по себе ничего не делает.   -  person Sebastian Simon    schedule 16.05.2017
comment
if (validate) всегда возвращает true, потому что validate — это функция.   -  person Heretic Monkey    schedule 16.05.2017
comment
@Xufox, чтобы было ясно, он что-то делает, но результат игнорируется.   -  person    schedule 16.05.2017
comment
Я не думаю, что этот вопрос должен был быть отклонен. Я согласен, что вопрос простой, но он не был ни плохо отформатирован, ни неясен, ни показал отсутствие усилий   -  person Deblaton Jean-Philippe    schedule 16.05.2017


Ответы (1)


последующий

if(validate)

Означает "Существует ли объект validate?"

Что вам нужно сделать, так это использовать результат выполнения вашей функции проверки:

if (validate(phone)) {
    console.log("The number " + phone + " is valid.");
} else {
    console.log("The number " + phone + " is NOT valid.");
}

где if (validate(phone)) — это сокращение от

let validated = validate(phone);    // you store the result of the validate function into a new variable
if (validated) {}
person Deblaton Jean-Philippe    schedule 16.05.2017
comment
Большое спасибо. Ты спасатель! - person Rusletov; 16.05.2017