问答详情
源自:3-3 优化与扩展

关于 i 变量定义的问题

老师你好,有一点不明白

// 3.添加幻灯片的操作(所有的按钮&对应幻灯片的操作)
              function addSliders(){
                  // 3.1获取模板
                  var tpl_main = g('template_main').innerHTML.replace(/^\s*/, '').replace(/\s*$/, '');
                  var tpl_ctrl = g('template_ctrl').innerHTML.replace(/^\s*/, '').replace(/\s*$/, '');
                  
                  // 3.2定义最终输出HTML变量
                  var out_main = [];
                  var out_ctrl = [];
                  
                  // 3.3 遍历所有的数据,输出最终的HTML
                  for (i in data) {
                      var _html_main = tpl_main.replace(/{{index}}/g, data[i].img).replace(/{{h2}}/g, data[i].h1).replace(/{{h3}}/g, data[i].h2);
                      var _html_ctrl = tpl_ctrl.replace(/{{index}}/g, data[i].img);
                      
                      out_main.push(_html_main);
                      out_ctrl.push(_html_ctrl);
                  }
                  g('template_main').innerHTML = out_main.join('');
                  g('template_ctrl').innerHTML = out_ctrl.join('');
                  
                  // 7. 增加 # main_background
                  g('template_main').innerHTML += tpl_main.replace(/{{index}}/g, '{{index}}').replace(/{{h2}}/g, data[i].h1).replace(/{{h3}}/g, data[i].h2);
                  g('main_{{index}}').id = 'main_background';


              }



加下滑线的 i 变量, 没有定义就直接用了,不会报错吗?没明白

提问者:shijikl 2015-06-20 07:19

个回答

  • 慕斯卡8624133
    2017-07-20 12:16:47

    我的浏览器data[i]显示未定义,请问这个怎么解决啊,这样的话无法添加背景图片l

  • Lyn_Tech
    2015-06-24 14:45:25

    js 的变量可以不用声明就使用。

    因为加了 _ 下划线,所以知道是个临时变量,在其他地方即使被覆盖也不在意,随让他只是个临时工。

  • 丶小八戒
    2015-06-20 10:41:55

    定义变量时省略var是不安全的,不过是合法的。定义的变量的作用域取决于定义的位置

    1、没有var

    简明的说,定义变量时省略var是不安全的,不过是合法的。这时无论该变量是在什么位置定义的,解释器都会赋予该变量以全局作用域。

    2、有var

    安全的,合法的。定义的变量的作用域取决于定义的位置。