Я думаю, что ваш код в порядке. Это просто и легко понять. Однако это определенно не то, что нынешние хипстеры javascript считают крутыми или что-то в этом роде.
К сожалению, без использования традиционной структуры цикла, такого как цикл for, вы не можете выйти досрочно, когда парни никогда не могут быть сбалансированы. Так что, честно говоря, ваша функция, вероятно, более эффективна, чем то, что они ищут. Но вообще говоря, хипстерам javascript на самом деле не важна эффективность кода.
Это может быть больше, чем они ищут:
const balancedParens = inputString =>
// We don't need curly brackets here because we're doing everything
// on one "line" and just returning
inputString.split('')
// Reduce is the substitute for your for loop here.
// It iterates over each character and stores the return value in "sum"
// on each iteration
.reduce((sum, char) => {
if (char === '(') return sum + 1;
else if (char === ')') return sum - 1;
else return sum;
// This comparison makes the entire function return true if
// our reduce resulted in zero, otherwise false
}, 0) === 0;
const logResult = result =>
result ? console.log('parens are balanced.')
: console.log('ERROR: unbalanced!');
logResult(balancedParens('()()(i)'));
logResult(balancedParens('()()())'));
Если вы не знакомы с функцией Reduce в массиве, проверьте это здесь:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
Это функция высшего порядка (имеется в виду функция, которая принимает функцию в качестве одного из аргументов). Это общий случай использования жирных стрел просто потому, что обозначения в конечном итоге гораздо более краткие.
Примечание: я мог бы скептически относиться к любому курсу, который "настоятельно рекомендует против" для циклов. Но, возможно, они просто пытаются заставить вас использовать новые функции JS.