Javascript:基本 for 循环不起作用

标签 javascript for-loop referenceerror

是否有任何原因导致以下内容不起作用:

for (i=0;i < someArray.length;i++) {
    if (someArray[i].indexOf("something") !== -1) {
        //do something here
    }
}

最基本的“for”循环可能。但这不起作用。在第一行(循环声明,而不是循环内部),我得到“ Uncaught ReferenceError ;i 未定义。”

我在一个 Chrome 选项卡中打开此页面,并在另一个选项卡中打开该页面的另一个早期版本。在另一个选项卡中,这个循环运行得很好;在第一个选项卡中,此代码会引发错误。

编辑 - 2015 年 7 月 2 日

关于严格模式的回复很有帮助。在阅读了一些代码并浏览了代码之后,我已经了解了发生了什么。

令人困惑的是,两个版本的代码看起来都是这样的,有一些细微的差别(requirejs 模块):

define(
    'viewModels/someViewModel',
    ['dependency1', 'dependency2', 'dependency3'],
    function(dep1, dep2, dep3) {

        "use strict";

        function SomeViewModel(arg1, arg2) {
            var self = this;
            self.initialize();

            self.removeRefinement = function(refinementString) {
                var refinementArray = refinementString.split("&");

                for (i=0;i < navigationArray.length;i++) { //<-- error

                }
            }
        }
    }
);

一个版本会引发引用错误。有一个没有。

这是一个大型 Web 应用程序,包含许多其他页面和 Javascript 文件。我唯一能想到的是,在代码的一个版本中,也许我无意中在应用程序的其他地方全局定义了它,而严格模式未启用。运行到断点并检查“窗口”后,我发现这正是发生的情况。

谢谢=D

最佳答案

如果您位于 strict mode ,您将收到错误 Uncaught ReferenceError ; i 未定义。如果您未处于严格模式,则不会收到错误。

这将引发错误

'use strict'
var someArray = ['aaa', 'bbb', 'ccc'];

for (i=0;i < someArray.length;i++) {
  console.log(i)
  if (someArray[i].indexOf("something") !== -1) {
    //do something here
  }
}

这不会

var someArray = ['aaa', 'bbb', 'ccc'];

for (i=0;i < someArray.length;i++) {
  console.log(i)
  if (someArray[i].indexOf("something") !== -1) {
    //do something here
  }
}

关于Javascript:基本 for 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172406/

相关文章:

javascript - 循环遍历 JSON 响应对象

javascript - 修改存储在变量中的innerHTML不起作用

javascript - 我创建了一个可以对数字进行因式分解的网页。我已经创建了该功能。现在我需要创建一个函数来显示我的数学。

android - 创建无限循环android的最佳方法

java - For 循环星号和加号(矩形形式)

JavaScript 未捕获引用错误 : closeInfoBox is not defined (when it really is)

Javascript Promise 函数样式

c - 解释代码输出的性质?

android - AdMob 不会在 Jelly Bean 上加载横幅,ReferenceError,AMFA_getSdkConstants 未定义

javascript - 无法加载资源 : Uncaught ReferenceError: InfoBox is not defined at mainMap