【问题标题】:How to do an inline for loop in JavaScript, that's not connected to a variable如何在 JavaScript 中执行内联 for 循环,该循环未连接到变量
【发布时间】:2020-07-19 13:14:53
【问题描述】:

众所周知,JavaScript 通常允许以下格式的内联 for 循环:

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

但是,当一个人想要使用常规的 for 循环内联作为一个语句时,就会发生错误。例如:

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

尽管这在技术上是一行,但由于它以字面上是内联的格式使用,并且被视为一个语句,它会给出错误:

Uncaught SyntaxError: Unexpected token 'for'

为什么要这样做?简单:为了在一行中生成一个数组,或者字符串,例如:

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

但这给出了一个明显的

Uncaught SyntaxError: Unexpected identifier

错误,因为“let”关键字,但是that's a different question

主要是,是否可以在 JavaScript 中进行常规的 for 循环内联?

【问题讨论】:

  • 您可以随时使用 IIFE。
  • @Bergi 那是什么

标签: javascript arrays string for-loop inline


【解决方案1】:

这是一行IIFE(立即调用函数表达式):

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

console.log(newString);

关于 IIFE 的进一步阅读:

【讨论】:

    【解决方案2】:

    为什么你特别需要在一行中使用一个 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);
    

    【讨论】:

      【解决方案3】:

      for 是语句而不是表达式,您不能在变量赋值的右侧使用它。您也不必使用void。只需简单地使用循环

      for(var i = 0; i &lt; 4; i++) console.log(i)

      【讨论】:

      • true,尽管 void 只是一个示例,以便能够将其与逗号运算符一起使用,例如 (for(var i = 0; i
      • @bluejayke 您不能在语句之间使用逗号运算符。因为语句没有return 任何东西。而for 是一个声明。
      • 但这就是问题所在,是否有某种 for 循环可以返回一个值,但工作方式相同,或者有没有办法将语句用作表达式?
      猜你喜欢
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      相关资源
      最近更新 更多