Я часто JavScript ярлыки полезны, например, замена если/другое заявления какЕсть ли эквивалент «while», который можно использовать в скобках в JavaScript?
if (a !== 0) {
b = c;
} else {
b = d;
}
с
b = a ? c : d;
или замена для/следующих петель, как
for (let i = 0; i < array.length; i++) {
element = array[i];
/* do something with element... */
}
с
array.forEach(element => { /* do something with element... */ });
мне особенно нравится, что эти и другие подобные ярлыки могут быть объединены и использованы в вводных заявлений, таких как
array.forEach(e => (x += e ? a : b, e * x));
(работ)
Однако, я не смог найти ярлык или функциональный эквивалент оператора while, который работает в круглых скобках. Что-то подобное существует?
Я пытался использовать нормальное заявление, а внутри скобок, но я получил ошибку
array.forEach(e => (while (e.length > 160) { e.replace(' ', ''); }, e));
(не работает)
Я знаю, что выше, можно переписать в более длинной форме, как так
array.forEach(e => {
while (e.length > 160) {
e.replace(' ', '');
}
return e;
});
(работ)
Но иногда я действительно предпочитаю я nline сокращает эквивалент while, а не длинную версию. Есть ли способ сделать это?
Пример «Более длинная форма» имеет ту же длину, что и «более короткий» пример, за исключением форматирования в белом пространстве. Единственное различие заключается в правильном использовании фигурных скобок вместо parens. –
Ваш цикл while может или не может закончиться. Если вы передадите строку, состоящую из 161 + непространственных символов, вы никогда не покинете цикл while. Во всяком случае, я не уверен, почему вы его зацикливаете; replace получит весь экземпляр символа в одном вызове. Кроме того, похоже, что у вас есть синтаксическая ошибка в вашей однострочной версии. –
@SteveH. Я думаю, что дело в том, что он хочет использовать оператор запятой вместо оператора return – Paulpro