为什么数组在Javascript中重写函数内的所有值?

时间:2015-05-26 06:31:42

标签: javascript arrays

我正在学习Javascript,我知道这个问题很简单,但我想我错过了一些东西。请有人解释为什么数组在函数循环内重写以及如何将新值推送到此数组?

这是我的功能,几乎没有参数 我希望每次都将新的td值推送到rez数组,但它总是重写。错误在哪里?

this.rule = function(tr, td, size) {
    var rez = [];
    for (var i = 0; i < size; i++) {
        rez.push(tr);
    }
    console.log(tr, td, size);
    console.log(rez);
}

2 个答案:

答案 0 :(得分:1)

每次调用此函数时,您都会重新声明数组。您应该将angular.module('app').factory('users', ['$http', function($http) { return { get: function (callback) { return $http.get('http://www.json-generator.com/api/json/get/bJHFVOzrzC?indent=2'); } } }]); 移到功能之外。

答案 1 :(得分:1)

你将rez作为局部变量,所以每次调用规则时都会创建rez变量的新副本create rez作为全局变量你的问题将会解决你可以尝试这个

var rez = [];
rule = function(tr, td, size) {

    for (var i = 0; i < size; i++) {
        rez.push(tr);
    }
    console.log(tr, td, size);
    console.log(rez);
}; 
rule("tr","td",3); 
rule("t","t",3);