Как сделать inline для l oop in JavaScript, это не связано с переменной - PullRequest
3 голосов
/ 07 апреля 2020

Известно, что в общем случае JavaScript допускает встроенное значение для l oop в формате:

someArray.forEach(x => x.doSomething());

Однако, когда нужно использовать обычное встроенное значение для -l oop, как одно утверждение, ошибка произошла. Например:

void(for(var i = 0; i < 0; i++) console.log(i));

Хотя это технически одна строка, но поскольку она используется в формате буквально встроенного и считается одним оператором, она выдает ошибку:

Uncaught SyntaxError: Неожиданный токен 'для'

Почему кто-то может захотеть это сделать? Просто: чтобы создать массив или строку в одну строку, например:

var newString = (let k = "", for(let i = 0; i < 1000; i++) k+= i, k);

Но это дает очевидное

Uncaught SyntaxError: Неожиданный идентификатор

ошибка из-за ключевого слова "let", но это другой вопрос .

В основном, возможно ли сделать обычный for-l oop inline в JavaScript?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2020

for - это оператор, а не выражение, которое вы не можете использовать в правой части присваивания переменной. Вам также не нужно использовать void. Просто используйте l oop

for(var i = 0; i < 4; i++) console.log(i)
1 голос
/ 07 апреля 2020

Вот одна строка IIFE (выражение вызова немедленно вызванной функции):

let newString = (() => {let concatenatedString = ''; for (let i = 0; i < 1000; i++) {concatenatedString+= i;} return concatenatedString;})();

console.log(newString);

Дополнительная информация по IIFE:

0 голосов
/ 07 апреля 2020

Зачем вам конкретно нужно для l oop в одной строке? Это выглядит менее читабельным. Почему бы просто не деформировать вашу функцию l oop в функции?

function functionName(number) {
    let temp = 0;
    let i = 0;

    for (i; i < number; i++) {
        temp += i;
    }

    return temp;
}

const value = functionName(5);

console.log(value);
...