Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Day74:写出执行结果,并解释原因 #122

Closed
lgwebdream opened this issue Jul 6, 2020 · 5 comments
Closed

Day74:写出执行结果,并解释原因 #122

lgwebdream opened this issue Jul 6, 2020 · 5 comments

Comments

@lgwebdream
Copy link
Owner

var arr1 = "ab".split('');
var arr2 = arr1.reverse(); 
var arr3 = "abc".split('');
arr2.push(arr3);
console.log(arr1.length);
console.log(arr1.slice(-1));
console.log(arr2.length);
console.log(arr2.slice(-1));
@lgwebdream
Copy link
Owner Author

扫描下方二维码,获取答案以及详细解析,同时可解锁800+道前端面试题。

@Genzhen Genzhen closed this as completed Jul 22, 2020
@LiSiQinF
Copy link

// 答案
3 ["a","b","c"] 3 ["a","b","c"]

//解析
这个题其实主要就是考察的reverse会返回该数组的引用,但是容易被迷惑,导致答错,如果知道这个点,就不会掉坑里了。

1)reverse
MDN 上对于 reverse() 的描述是酱紫的:
The reverse method transposes the elements of the calling array object in place, mutating the array, and returning a reference to the array.
reverse 方法颠倒数组中元素的位置,改变了数组,并返回该数组的引用。

2)slice
slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

@Ha0ran2001
Copy link

// 答案 3 ["a","b","c"] 3 ["a","b","c"]

//解析 这个题其实主要就是考察的reverse会返回该数组的引用,但是容易被迷惑,导致答错,如果知道这个点,就不会掉坑里了。

1)reverse MDN 上对于 reverse() 的描述是酱紫的: The reverse method transposes the elements of the calling array object in place, mutating the array, and returning a reference to the array. reverse 方法颠倒数组中元素的位置,改变了数组,并返回该数组的引用。

2)slice slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

搞了这么,第一次直到 reverse 会返回数组的引用!

@3000-codes
Copy link

arr1=['a','b'] //切割
arr2=arr1=['b','a'] //反转arr1并赋值给arr2(引用传递)
arr3=['a','b','c'] //切割
arr2=[['b','a',['a','b','c']] //将arr3推入arr2,因为arr2与arr1是同一个引用,所以arr1也是这个值
3
['a','b','c'] // 注意slice不影响原数组
3
['a','b','c']

@fshmjl
Copy link

fshmjl commented Nov 7, 2023

答案是:3,[ [ 'a', 'b', 'c' ] ],3,[ [ 'a', 'b', 'c' ] ]
//解析 这个题其实主要就是考察的reverse会返回该数组的引用,但是容易被迷惑,导致答错,如果知道这个点,就不会掉坑里了。

1)reverse MDN 上对于 reverse() 的描述是酱紫的: The reverse method transposes the elements of the calling array object in place, mutating the array, and returning a reference to the array. reverse 方法颠倒数组中元素的位置,改变了数组,并返回该数组的引用。

2)slice slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。但是需要注意的是slice()返回的是一个浅拷贝的数组,但是由于最后一个elements是一个数组即[ 'a', 'b', 'c' ],所以答案应该是一个二维数组即[[ 'a', 'b', 'c' ]]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants