기본 유형, 참조 유형
기본 형식 값(수치, 볼 값,null,undefined): 창고 메모리에 저장된 간단한 데이터 세그먼트를 가리킨다.인용 형식 값(대상, 수조, 함수, 정규): 메모리에 저장된 대상을 가리킨다. 변수에 저장된 것은 사실상 하나의 바늘일 뿐이다. 이 바늘은 메모리에 저장된 다른 위치를 실행하고 이 위치에서 대상을 저장한다.
var a
var b
var c
var a = 1
var b = 2
var c = {name:'yangtao'}
// --1-- --2-- --0x0033-- , |
// , 0x0033 {name:'yangtao'}
var aa = a
var bb = b
var cc = c
// --1-- --2-- --0x0033--
// aa bb cc
a = 100
b = 200
c.name = 'jirengu'
console.log(aa)
console.log(bb)
console.log(cc)
// --1-- --2-- --0x0033--
// {name:'jirengu'}
c:{name:' '}
//0x0044 {name:' '}
console.log(cc)
함수의 매개 변수 전달
function inc(n){
// var n =a
n++;
}
var a = 10;
inc(a);
console.log(a);
function incObj(obj){
//var obj = o //0x0001
obj.n++;
}
var o = {n: 10}; //o = 0x0001
incObj(o);
console.log(o);
function squireArr( arr ){
//var arr = 0x0011
for(var i = 0; i < arr.length; i++){
arr[i] = arr[i] * arr[i];
}
}
function squireArr2( arr ){
var newArr = [];
for(var i = 0; i < arr.length; i++){
newArr[i] = arr[i] * arr[i];
}
return newArr;
}
var arr = [2,1,3,6]; //arr 0x0011
squireArr(arr);
console.log(arr); // [4,1,9,36]
var arr2 = squireArr2(arr)
console.log(arr2);
대상 얕은 복사와 깊은 복사
var a = 1
var b =1
a =2
b ==1
var obj = {age:100}
var obj2 = obj
obj.age =200
obj2.age ==200
:
var a =1
var b =a
a =2
b ==1
var obj = {
age:100,
friend:{
name:'yangtao'
}
}
var obj2 = obj
obj.age =200
obj2.age ==200
function shadowCopy(obj){
var newObj = {}
for (var key in obj){
newObj[key] = obj[key]
}
return newObj
}
var obj3 = shadowCopy(obj)
obj.age = 400
console.log(obj3)
심층 복사로 완전 복사: 귀속
unction copy(obj){
var newObj = {};
for (var key in obj){
if(obj.hasOwnProperty(key)){
if(typeof obj[key] ==='number' || typeof obj[key] ==='boolean'|| typeof obj[key] ==='string'|| obj[key] === undefined|| obj[key] === null){
newObj[key] = obj[key];
}else{
newObj[key] = copy(obj[key]);
}
}
}
return newObj
}
var obj3 = copy(obj)
//obj.age = 400
//console.log(obj3)
관련 작업
1. 인용 유형은 어떤 것들이 있습니까?인용하지 않는 유형은 무엇입니까?다음 코드는 무엇을 출력합니까?무엇 때문에
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);//false , , obj1 obj2 ,
console.log(obj1 = obj2);//Object {a: 1, b: 2}
console.log(obj1 == obj2);//true ,obj1 obj2
2. 다음 코드는 무엇을 출력합니까?무엇 때문에
var a = 1
var b = 2
var c = { name: ' ', age: 2 }
var d = [a, b, c]
var aa = a
var bb = b
var cc = c
var dd = d
a = 11
b = 22
c.name = 'hello'
d[2]['age'] = 3
console.log(aa) //1
console.log(bb) //2
console.log(cc)//Object {name: "hello", age: 3}
console.log(dd)//[1,2,{name: "hello", age: 3}]
1,
--1-- --2-- --0x0033-- --0x0044--
a b c d
0x0033:{name:' ' age:2}
0x0044:[1,2, {name:' ' age:2}]
--1-- --2-- --0x0033-- --0x0044--
aa bb cc dd
2,
--11-- --22-- --0x0033- --0x0044--
a b c d
0x0033:{name:'hello' age:3}
0x0044:[1,2, {name:'hello' age:3}]
--1-- --2-- --0x0033-- --0x0044--
aa bb cc dd
1、 a,b , aa bb , 1,2。
2、c,d ,c d 。
3. 다음 코드는 무엇을 출력합니까?무엇 때문에
var a = 1
var c = { name: 'jirengu', age: 2 }
function f1(n){
++n
}
function f2(obj){
++obj.age
}
f1(a)
f2(c)
f1(c.age)
console.log(a) //1 var n = a, a 1, 1
console.log(c)//Object {name: "jirengu", age: 3} var obj = c //0x0001, c age ++obj.age, c //0x0001 age 3
4. 다음과 같은 그룹을 필터하고 정수만 남기고 원수 그룹에서 직접 조작합니다
var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
for (var i = 0; i < arr.length; i++){
if ( arr[i] <= 0 ) {
arr.splice(i, 1);
filter(arr);
}
}
}
filter(arr)
console.log(arr) // [3,1,2]
5. 다음 수조를 필터하여 정수만 보존하고 원수조는 변하지 않으며 새 수조를 생성합니다
var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
var newArr = [];
for (var i = 0; i < arr.length; i++){
if ( arr[i] > 0 ) {
newArr.push(arr[i]);
}
}
return newArr;
}
var arr2 = filter(arr)
console.log(arr2) // [3,1,2]
console.log(arr) // [3,1,0,-1,-3,2,-5]
6. 깊이 복사 함수를 써서 두 가지 방식으로 실현
:
function copy(obj){
var newObj = {};
for (var key in obj){
if(obj.hasOwnProperty(key)){
if(typeof obj[key] ==='number' || typeof obj[key] ==='boolean'
|| typeof obj[key] ==='string'|| obj[key] === undefined||
obj[key] === null){
newObj[key] = obj[key];
}else{
newObj[key] = copy(obj[key]);
}
}
}
return newObj;
}
:
JSON.stringify(obj)
JSON.parse()
JSON.parse(JSON.stringify(obj))
function copy(obj){
var newObj = JSON.parse(JSON.stringify(obj));
return newObj;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.