为什么它需要我的功能并使它不再是一个功能?

时间:2010-08-14 03:14:19

标签: javascript random

我有一个从1-10返回随机数的函数。当我在我的其他函数中使用它时它会工作一次,但它会开始出现一个错误,它不是一个函数。 这不是确切的代码,只是一个类似的示例代码。它产生一个错误,说“对象[对象DOMWindow]的TypeError:Property'ran'不是函数”为什么这样做?

非常感谢

var buffer = [];

function ran() { 
   return Math.round(Math.random()*10);
};

function test(){
   var size = 6;
   for (i=0; i<=size;i++) {
      var num = ran();
      if (num === 2 || num === 3){
         buffer.push(num);
      };
   };
};

1 个答案:

答案 0 :(得分:4)

您的代码很好,但是从错误中看起来您正在为代码中的其他位置的一个名为ran的隐含全局变量赋值。

var buffer = [];

function ran() { 
   return Math.round(Math.random()*10);
};

function test() {
   var size = 6;
   for (i=0; i<=size;i++) {
      var num = ran();
      if (num === 2 || num === 3){
         buffer.push(num);
      };
   };
};

// ... somewhere else:

function someOtherFunction() {
   ran = 5;  // This will break your run() function when 
             // someOtherFunction() is called.
}

如果是这种情况,请确保使用var关键字将变量的范围限制为声明它们的函数:

// ... somewhere else:

function someOtherFunction() {
   var ran = 5;  // This will limit the scope of ran and will 
                 // not conflict with the run() function.
}