老师问题有点多,请原谅~~

老师问题有点多,请原谅~~

  function arrReverse(arr){//arr是不是就是保存1~8的原始数组?
       var newArr=[];  //创建一个新的数组;
       for(var i=0;i<arr.length;i++){ //循环1~8;这个arr.length的长度是根据底部调用函数长度得出的吗?
          newArr.unshift(arr[i]);//补充代码
           //1.newArr.unshift向该数组有序添加参数,应该就是1~8,其实循环输出的本来也是1~8。
           //2.括号里面的arr[i].是不是也是1~8;这组语句加起来是几个意思呢?1~8是在这里反的么?
           //3. 在控制台打印arr[i]。为啥显示arr is not defined!

        }
     return newArr;//补充代码
    }
   document.write(arrReverse([1,2,3,4,5,6,7,8]));
 /*  1.这是在调用arrReverse函数并向数组arr输入参数1~8这组数么?为啥写在document.write里面而不单独调用?
   这样写感觉有点绕欸,理解不出是什么意思。
     2.在页面输出arrReverse函数里面数组的参数?可是该函数现在已经有了两个数组是吗?这句话是想输出啥呢?8~1又是怎么输出到页面上的?
     3.我的理解是这里能不能分开写成(好吧,试了不行,说newArr未定义,可是不是定义了嘛!)
   先在最前面调用并输入参数: arrReverse([1,2,3,4,5,6,7,8]);
   再在最后               :  document.write(newArr);*/



题目看懂了,但是老师给的代码模板看不懂。

随便copy的一位同学的代码,请老师帮忙分析一下,感谢?


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,1、newArr.unshift;unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。这里可以结合你的问的2来理解,arr第一个循环出来的是1,然后1添加到newArr的开头,因为newArr一开始是空的,所以现在就是newArr=[1],然后循环出来arr的第二个元素即2,然后2添加到newArr的开头,所以现在就是newArr=[2,1]以此类推,逐个添加到newArr中,从而达到数组反转。

2、arr[i]是你循环出来的数组内容哦,具体是什么,要看你传入的数组是什么,这里由于传入的数组是1-8,所以这里循环出来的也是1-8;

3、你在控制台打印arr是在函数中,还是函数外?这里arr是函数的参数,所以不能在函数外使用。另,建议:因为如果i在循环外使用的话,是循环之后的i,i应该是8,arr[8]的话,是没有这个元素的,所以这里需要在for循环中输出。

因为你这里有两个1,2,3的问题,所以下面这个是下面1,2,3的问题。

1、这是在调用arrReverse函数并向数组arr输入参数1~8这组数么?

    这里arr是形参,[1,2,3,4,5,6,7,8]是调用数组的时候传递的参数,就是本段代码的话,在函数中arr就等于[1,2,3,4,5,6,7,8]

    为啥写在document.write里面而不单独调用

    这里是因为调用函数,得到的是函数的返回值,这里返回的是newArr;这个数组,然后把其输出到页面,也可以但是调用,不过这样的话,就需要在函数中输出了,例:

    http://img1.sycdn.imooc.com//climg/5b8360950001aed905190158.jpg

2、在页面输出arrReverse函数里面数组的参数?

    这里不太理解你问的什么意思,没有输出参数呀,这里在页面输出的是最后反转得到的数组newArr;

    可是该函数现在已经有了两个数组是吗?这句话是想输出啥呢?

    现在是有两个数组,一个反转之前的,就是传递进去的[1,2,3,4,5,6,7,8],还有个反转之后的数组newArr;

    8~1又是怎么输出到页面上的?

    反转之后的数组就是 8~1即: newArr;关于这么反转的,可以参考上面的问题1,然后调用函数,得到返回值newArr;然后输出页面。

3、关于你的问题3,分开写的话,可以参考问题1,不过这里是要在函数中输出。

若能解决你的疑问,望采纳。

祝学习愉快~

  • 慕桂英2998029 提问者 #1
    非常感谢老师细心分析~~ 想追问下,for(var i=0;i<arr.length;i++);这里循环中的i为什么就是arr[i ]而不会是 newArr里面的i呢?另外:i代表的是数组的长度,而不是数组的内容吧~
    2018-08-27 16:25:16
  • 好帮手慕糖 回复 提问者 慕桂英2998029 #2
    你好,若 newArr数组中有内容的话,i在 newArr也可以使用i就是数字呀,因为正好小于长度,所以在arr[i]的时候,i可以表示数组的索引,例如:arr[0]对于的就是第一个元素。 祝学习愉快~
    2018-08-27 16:28:31
提问者 慕桂英2998029 2018-08-25 16:46:47

document.write(arrReverse([1,2,3,4,5,6,7,8]));  --------关于这块我重新看了一遍函数视频,问的有点二。。。?  

麻烦老师讲解下其他的?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师