Javascript forloop中的var j未定义,但上一个循环中的i已定义

Javascript forloop中的var j未定义,但上一个循环中的i已定义,javascript,Javascript,我有下面的函数返回一个错误 j没有定义 我不确定这是为什么,因为我在我的第一个for循环中没有返回未定义。如果我把第二个forloop改为for(var j=0…),那么它就行了。有人愿意解释一下为什么会这样吗 ;(function (window, document, undefined) { 'use strict'; var DOMState = document.readyState; if (DOMState === 'interactive' || DOMState ===

我有下面的函数返回一个错误

j没有定义

我不确定这是为什么,因为我在我的第一个for循环中没有返回未定义。如果我把第二个forloop改为for(var j=0…),那么它就行了。有人愿意解释一下为什么会这样吗

;(function (window, document, undefined) {
  'use strict';
  var DOMState = document.readyState;
if (DOMState === 'interactive' || DOMState === 'complete') {
      setTimeout(init, 250);
    } else if (document.addEventListener) {
      document.addEventListener('DOMContentLoaded', init);
    }
  function init() {
    var links = $('#list_of_recs a');

    for (i=0;i<links.length;i++) {
      var href = links[i].href;
      var campaignCode1 = "?intcam=ON_D_homepage_recently_viewed";
      var newHref = href + campaignCode1;
      links[i].href = newHref;
    }

    var recTotalDevices = $('#list_of_recs .one_image');

    for (j=0;j<recTotalDevices.length;j++) {
      var aLinks = $('#list_of_recs a')[j];
      var link = aLinks.href;
      var newLink = link.replace("upg-","");
      var newLinknew = newLink.replace("additional-line","");
      aLinks.href = newLinknew;
    }

  }
})(window, document);
;(函数(窗口、文档、未定义){
"严格使用",;
var DOMState=document.readyState;
if(DOMState=='interactive'| | DOMState==='complete'){
setTimeout(初始化,250);
}else if(文件.增补列表器){
document.addEventListener('DOMContentLoaded',init);
}
函数init(){
变量链接=$(“#记录列表a”);

对于(i=0;iJavaScript严格模式禁止使用未声明的变量。您未声明
j
,因此会出现错误

至于为什么
i
没有出现错误,这很可能是因为页面中的其他一些代码声明了一个全局
i
变量


您应该同时声明这两个变量。

JavaScript严格模式禁止使用未声明的变量。您没有声明
j
,因此您会出现错误

至于为什么
i
没有出现错误,这很可能是因为页面中的其他一些代码声明了一个全局
i
变量


您应该同时声明这两个脚本。

如果没有在您的页面上运行的任何其他脚本的完整上下文,则很难确定,但很可能在您的页面上有另一个脚本,其中包含对i=0的全局范围分配,因为这是一种常见约定

我建议你找个地方

var i=0,j=0;

在函数开始时,确保在循环中引用本地化变量。这比将变量放在for()的顶部更好循环

如果没有在页面上运行的任何其他脚本的完整上下文,则很难确定,但很可能页面上还有另一个脚本包含对i=0的全局范围分配,因为这是一种常见约定

我建议你找个地方

var i=0,j=0;

在函数开始时,确保在循环中引用本地化变量。这比将变量放在for()的顶部更好循环

因为严格模式?你不能分配给未声明的变量。我猜你会有一些你不知道的
窗口。我
。你应该为
i
变量加上
var
。你只是好奇而已。你从哪本书获得这种编程风格,它是哪一年写的?它是为一个学习javascriptBecause strict mode?你不能分配给未声明的变量。我猜你有一些你不知道的
窗口。我
。你也应该为
i
变量添加一个
var
,只是好奇而已。你从哪本书获得这种编程风格,它是哪一年写的?这是为了一个世界kmate谁在学习javascript