Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个独立工作但不能一起工作的javascript函数?_Javascript_Html - Fatal编程技术网

两个独立工作但不能一起工作的javascript函数?

两个独立工作但不能一起工作的javascript函数?,javascript,html,Javascript,Html,背景 我正试图为汗学院写一篇练习。他们的代码都可以在这里找到:。这是我第一次真正编写任何东西,我正在学习html和js,基本上只是通过查看示例代码 作为这个练习的一部分,我需要画一个“随机函数”,并找到它的零。我已经写了一个找零算法(反复将一个间隔减半以放大零点)。我知道牛顿方法的一些变体可能更快,但我想确保收敛。我的“随机函数”取一组点的值,并用多项式样条插值这些点。每一个都是独立工作的:我可以画出我的“随机函数”,我可以使用我的寻零算法,比如说,近似2的平方根(区间(1,2)上x^2-2的零

背景

我正试图为汗学院写一篇练习。他们的代码都可以在这里找到:。这是我第一次真正编写任何东西,我正在学习html和js,基本上只是通过查看示例代码

作为这个练习的一部分,我需要画一个“随机函数”,并找到它的零。我已经写了一个找零算法(反复将一个间隔减半以放大零点)。我知道牛顿方法的一些变体可能更快,但我想确保收敛。我的“随机函数”取一组点的值,并用多项式样条插值这些点。每一个都是独立工作的:我可以画出我的“随机函数”,我可以使用我的寻零算法,比如说,近似2的平方根(区间(1,2)上x^2-2的零点)。当我试图找到我的“随机函数”的零点时,我遇到了麻烦:我的浏览器进入了一个无限循环或什么的。我甚至看不出开发人员工具中有什么错误

所以我的问题基本上是:

  • 我犯了什么错误,消耗了这么多的计算能力
  • 这些功能如何能够独立工作而不是一起工作
  • 如何修复我的代码
  • 由于我在整个knhan学院框架内工作,我的程序中有太多内容,无法发布所有相关代码(它使用Raphael处理图像,预先编写代码使练习具有相同的风格,等等)。我可以给你我写的html代码和我写的函数的.js文件

    <!DOCTYPE html>
    <html data-require="math graphie graphie-helpers steveMath8">
      <head>
          <title>Piecewise-defined function</title>
          <script src="../khan-exercise.js"></script>
      </head>
      <body>
          <div class="exercise">
              <div class="vars">
    
    
      <var id = "n">randRange(2,4)</var>
      <var id = "abscissas">makeXList()</var>
      <var id = "ordinates">makeYList(-8,8,abscissas.length)</var>
      <var id = "points">makeCoordinates(abscissas,ordinates)</var>
     <var id = "f">(function(x){return niceFunction(x,points)})</var>
     <!-- <var id = "f">(function(x){return x*x-n})</var>-->
     <var id = zeros>locateZeros(f,abscissas)</var>
    
    
    
    
    
              </div>
    
              <div class="problems">
                  <div id="problem-type-or-description">
                      <p class="problem">You are going to have to answer 5</p>
                      <p class="question">Answer 5</p>
                      <div class="graphie" id="grid">
                    graphInit({
                        range: 10,
                        scale: 20,
                        tickStep: 1,
                        axisArrows: "<->"
                    });
    
                a =style({
                            stroke: "red",
                             strokeWidth: 2
                        }, function() {
                            plot( function( x ) { return niceFunction(x,points);
                            }, [ -10, 10 ] );
                        });;
                a.plot();
                </div>
    
                      <p class="solution">5</p>
                  </div>
    
    
    
              </div>
    
              <div class="hints">
                  <!-- Any hints to show to the student. -->
              </div>
          </div>
      </body>
    
    
    分段定义函数
    randRange(2,4)
    makeXList()
    makeYList(-8,8,横坐标长度)
    制造坐标(横坐标、纵坐标)
    (函数(x){返回函数(x,点)})
    定位零(f,横坐标)
    

    您必须回答5个问题

    回答5

    格拉菲尼特({ 范围:10, 比例:20, 第一步:, 如箭头所示: }); a=风格({ 笔画:“红色”, 冲程宽度:2 },函数(){ 绘图(函数(x){返回函数(x,点); }, [ -10, 10 ] ); });; a、 plot();

    5

    $.extend(KhanUtil{
    
    //如果num>0,则取num并返回+1;如果num则返回-1。我认为这与您的while循环有关:

    makeXList: function(){
    array = [-10]
    i=0
    while(array[i]<10){
        x = array[i]+3*KhanUtil.randRange(1,3)
        if (x<10){array.push(x)}
        i=i+1
        }
    array.push(10)
    return array
    
    },
    
    makeXList:function(){
    数组=[-10]
    i=0
    
    while(array[i]我修复了我的代码。问题似乎是,在这两个函数中,我都有一个类似这样的for循环

    for(i=0;i=10;i++)
    
    我把它改成了

    for(var i=0;i=10;i++)
    

    显然,我的程序将i视为一个全局变量,因此我的两个交互函数都递增相同的i。这有意义吗?在编程语言中,这似乎是一个非常糟糕的功能。我在这里遗漏了什么吗?

    谢谢!我将尝试修改它,看看它是否能解决问题。奇怪的是,我是如果这是个问题的话,我完全可以用图形表示函数。也许这只是根据需要生成数组的值?我实际上注释掉了整个代码块,只是手动输入了一个横坐标数组,我面临着同样的问题。所以这不是错误(或者我应该说,这只是其中一个错误!)你是对的,我刚刚检查过,当与未定义的语句进行比较时,该语句将计算为false。Michael:如果它仍然困扰着你,我已经找到了答案,并发布了一个答案。感谢所有的帮助。你确定这是一个无限循环(你看到CPU使用率最大化了吗)是的,CPU使用率最高的Safarits感谢你花时间仔细思考这个问题,所以我会在几天内接受这个答案,除非有人来详细说明这是怎么发生的以及为什么发生的,在这种情况下,我会接受那个人的答案。这似乎解释了:哦,天哪,我真不敢相信我错过了这个!JavaScript如果你不小心的话,你肯定会做一些非常糟糕的事情。不过,很高兴你发现了问题所在。好吧,同意@Micheal,它在java脚本中的结尾,人们必须始终考虑到…但是…根据我的弱知识,任何编程语言都不会这样做吗?…如果你没有在for语句中声明'i',它会ld倾向于从全局角度来看……如果找不到,将返回编译时错误,但另一方面java脚本将继续并声明它……Aukhan,在大多数编程语言中(我的经验非常有限)在另一个函数范围内定义的变量不是全局变量,除非您显式声明它们是全局变量。它们通常是函数范围的局部变量。
    for(var i=0;i=10;i++)