众所周知,JavaScript通常允许以下格式的内联循环:
someArray.forEach(x => x.doSomething());
但是,当您要使用常规的for循环内联时,作为一条语句,会发生错误。例如:
void(for(var i = 0; i < 0; i++) console.log(i));
即使从技术上讲这只是一行,但是由于它以字面内联的形式使用,并且被认为是一条语句,因此会出现错误:
未捕获的SyntaxError:意外的令牌'为'
为什么要这样做?简单:为了在一行中生成一个数组或字符串,例如:
var newString = (let k = "", for(let i = 0; i < 1000; i++) k+= i, k);
但是这很明显
未捕获的SyntaxError:意外的标识符
由于关键字“ let”而出现错误,但是that's a different question。
主要是,可以在JavaScript中进行常规的for循环内联吗?
这里是单行IIFE(立即调用函数表达式):
(() => {let newString = ''; for (let i = 0; i < 1000; i++) {newString+= i;} console.log(newString);})();
对IIFE的进一步阅读:
for
是一个语句,不是表达式,不能在变量赋值的右侧使用它。您也不必使用void
。只需简单地使用循环
for(var i = 0; i < 4; i++) console.log(i)
您为什么在一行中特别需要for循环?它看起来不太可读。为什么不只是在函数中扭曲for循环?
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);