k的值可以在A(k);中被改变吗?

解决方案 »

  1.   


    .....
      .....//引入接口
      var k;
      var bCycleCompleted=false;//是否下面的循环已经完成的BOOLEAN标志
      for(var i=0;i<10;i++)
      {
        A(k);//A是接口提供的一个函数
        if(i==9){bCycleCompleted=true}
      }
      if (bCycleCompleted){alert(k);}//加个判断看看呢?
      

  2.   

    是没执行到还是压根就没改变值啊,能不能让接口给个返回值就是K,赋给K再ALERT看看
      

  3.   

    alert(k);//在这里取不到正确的k值原因是A(k);还没执行完就执行到这句了。
    ---A(k)没执行完?怎么会?
    ---是说A(k)里调用了其它的异步程序,这些异步程序没执行完吧?
      

  4.   

    我觉得A(k)最好要有返回值,然后k=A(k),这样试一试就知道执行顺序了
      

  5.   

    3楼,这个判断是可以判断出来有没执行完,但是判断出来又能怎么样呢?你这样写就不会执行alert(k);这句了。
    5楼,A(k)里边是个什么机制就不清楚了,这是个接口的东西,反正是在A(k)没有执行完的时候就异步执行到了alert(k)。有办法吗???真的很头疼啊,再求解答.....
      

  6.   

     <script>
      var k;
      for(var i=0;i<10;i++)
      {
        A(k);//A是接口提供的一个函数
      }
      alert("这是主函数"+k);//在这里取不到正确的k值原因是A(k);还没执行完就执行到这句了。  function A(i)
      {
    alert("这是A的方法"+i);
      }
    </script>很明显,测试证明,先执行A(k),最后执行alert(K)。
      

  7.   

    你的意思是A(K)还没执行结束就到了alert,只有一个原因,就是A(K)中遇到了错误或者代码有误,还没执行结束,他就return了,所以,10次循环过后,A(K)方法都是执行中直接return了。否则不可能出现A(K)没执行就先执行alert的
      

  8.   

    9楼 <script>
      var k;
      for(var i=0;i<10;i++)
      {
        A(k);//A是接口提供的一个函数
      }
      alert("这是主函数"+k);//在这里取不到正确的k值原因是A(k);还没执行完就执行到这句了。
    //如果在这句上加上个延时的话就能取到正确的值,setTimeout(function(){alert("这是主函数"+k);},1000); 为什么?
      function A(i)
      {
        alert("这是A的方法"+i);//XXXXXXXXXXXXX这段实际上是很复杂费时间的,要这么简单的话自然就不会出现那种情况了
      }
    </script>