We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
基础篇 难度 ★ //浅拷贝 请写出下列代码的输出结果,为什么? //1. var a = 2 ; var a_copy = a ; a_copy = 3; console.log(a);//? //2.数组1 var arr = [1,2,3,4]; var arr_copy = arr ; arr_copy.push(5); console.log(arr);//? //3.数组2 var arr = [1,2,3,4]; var arr_copy = arr ; arr_copy = [1,2,3,4,5]; console.log(arr);//? console.log(arr_copy);//? //4.对象1 var obj = { name:'sunshine', age:18 }; var obj_copy = obj ; obj_copy.name = '过客'; console.log(obj.name);//? //5.对象2 var obj = { name:'sunshine', age:18 }; var obj_copy = obj ; obj_copy = { name:'过客', age:18 }; console.log(obj.name);//? console.log(obj_copy.name);//?
The text was updated successfully, but these errors were encountered:
这道题涉及 javascript 的数据类型,主要分两类:
基本数据类型是直接按值存放在内存中的简单数据段,可以直接保存变量中的实际值,所以第 1 题控制台输出 2,a 是基本数据类型。
引用数据类型是存放在内存中的对象,其变量其实是一个指针,保存了指向内存对象的引用地址,所以第 2 题的 arr 变量其实只是将引用地址复制了一份给了 arr_copy 变量,实际上它们共同指向同一个 [1,2,3,4] 内存对象,所以 arr_copy push 了一项,是对 [1,2,3,4] 的修改,因此 arr 变量的值也跟着变为了 [1,2,3,4,5],第 4 题也是同样的道理。
arr
arr_copy
[1,2,3,4]
[1,2,3,4,5]
第 3 题和第 5 题有所不同,虽然是引用数据类型,但代码中对 copy 的变量进行了重新赋值,相当于在内存中创建并指向了一个新的内存对象,因此对 copy 变量的修改不会影响到原先变量的值。
总结一下答案:
2
过客
sunshine
Sorry, something went wrong.
No branches or pull requests
The text was updated successfully, but these errors were encountered: