老师问题有点多,请原谅~~
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的一位同学的代码,请老师帮忙分析一下,感谢?
正在回答
你好,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;这个数组,然后把其输出到页面,也可以但是调用,不过这样的话,就需要在函数中输出了,例:
2、在页面输出arrReverse函数里面数组的参数?
这里不太理解你问的什么意思,没有输出参数呀,这里在页面输出的是最后反转得到的数组newArr;
可是该函数现在已经有了两个数组是吗?这句话是想输出啥呢?
现在是有两个数组,一个反转之前的,就是传递进去的[1,2,3,4,5,6,7,8],还有个反转之后的数组newArr;
8~1又是怎么输出到页面上的?
反转之后的数组就是 8~1即: newArr;关于这么反转的,可以参考上面的问题1,然后调用函数,得到返回值newArr;然后输出页面。
3、关于你的问题3,分开写的话,可以参考问题1,不过这里是要在函数中输出。
若能解决你的疑问,望采纳。
祝学习愉快~
document.write(arrReverse([1,2,3,4,5,6,7,8])); --------关于这块我重新看了一遍函数视频,问的有点二。。。?
麻烦老师讲解下其他的?
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星