В зависимости от браузера может случиться так, что вы пытаетесь вызвать функции до того, как они будут определены (сверху вниз).
Мне показалось, что этот код работает нормально при Firefox on Windows.
Однако я вижу много возможностей для улучшения вашего стиля кодирования.
Добавьте console.log
к каждой функции, чтобы увидеть, когда она запускается, и что вы отправили.
Переместите строку console.log(errorChecker(num1, word1, num2, word2))
вниз.
Используйте ;
в конце каждой строки. Некоторые эксперты не делают этого, но, поскольку вы новичок в программировании, следуйте правилам языка.
«Изучайте правила как профессионал, чтобы вы могли нарушать их, как артист».
Множество возможностей обучения ниже, прочитайте мои комментарии и, наконец, sh код. Ваша следующая задача - включить в этот код несколько массивов и объектов.
function errorChecker(num1, word1, num2, word2) {
console.log("errorChecker()", num1, word1, num2, word2);
var isValid = true; // we assume valid = true until something bad happens.
if (typeof num1 === "number" && typeof word1 === "string" && typeof num2 === "number" && typeof word2 === "string") {
console.log('all parameters are ok');
} else {
console.error('parameter error:');
isValid = false;
}
var isWord1Good = wordChecker(word1),
isWord2Good = wordChecker(word2);
if (isWord1Good === true && isWord2Good === true) {
//don't return here, you have only fulfilled one of your checks.
//return true;
console.log("wordChecker says: 'Words are so good.'");
} else {
console.error('wordChecker did NOT like', isWord1Good, isWord2Good);
isValid = false;
}
//ok do the same thing I did above, I've gotten tired
if (singularChecker(num1, word1) === false && (pluralChecker(num2, word2) === false)) {
console.log('correct singular and plurals')
} else {
console.log('incorrect singular and plurals')
isValid = false;
}
//Finally return at one point in the function, at the end, this makes it so much easier to debug:
return isValid;
}
//do similar stuff with this one
// function to set exact word parameters that can be used
function wordChecker (word) {
var wordIsTime = false;
switch (word) {
case 'seconds':
case 'second':
case 'minutes':
case 'minute':
case 'hours':
case 'hour':
case 'days':
case 'day':
wordIsTime = true;
}
//here's a log to show what fn you're in, what you sent in, and what it's returning:
console.log("wordChecker()", word, wordIsTime);
return wordIsTime;
}
//do similar stuff with this one
function pluralChecker (digit, letters) {
switch (letters.toLowerCase()) {
case 'seconds':
case 'minutes':
case 'hours':
case 'days':
if (digit !== 1) {
return true;
} else {
return false;
}
}
}
function singularChecker (numz, wordz) {
//wordz.lowerCase() is not a function
switch (wordz.toLowerCase()) {
case 'second':
case 'minute':
case 'hour':
case 'day':
if (numz === 1) {
return true;
} else {
return false;
}
}
}
// For checking function effectiveness
const num1 = 1;
const word1 = 'minutes';
const num2 = 2;
const word2 = 'minute';
console.log(errorChecker(num1, word1, num2, word2));