인용과 심도 복사

2595 단어

1. 인용 유형은 어떤 것들이 있습니까?참조되지 않는 유형


기본 형식 값(수치, 볼 값,null,undefined): 창고 메모리에 저장된 간단한 데이터 세그먼트를 가리킨다.인용 형식 값(대상, 수조, 함수, 정규): 메모리에 저장된 대상을 가리킨다. 변수에 저장된 것은 사실상 하나의 바늘일 뿐이다. 이 바늘은 메모리에 저장된 다른 위치를 실행하고 이 위치에서 대상을 저장한다.string 형식은 좀 특수합니다. 문자열은 가변적인 크기를 가지고 있기 때문에 고정된 크기의 변수에 직접 저장할 수 없습니다.효율성 때문에, 우리는 JS가 문자열의 내용이 아니라 문자열에 대한 인용만 복제하기를 희망합니다.그러나 다른 한편, 문자열은 많은 면에서 기본 유형의 표현과 비슷하지만 문자열은 변할 수 없다는 사실(즉 하나의 문자열 값의 내용을 바꿀 수 없다는 것)이기 때문에 문자열을 기본 유형과 비슷한 변할 수 없는 인용 유형으로 볼 수 있다.

2. 다음 코드는 무엇을 출력합니까?무엇 때문에

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);// 。false
console.log(obj1 = obj2);// obj2 obj1, 
console.log(obj1 == obj2);// , 。ture

3. 다음 코드는 무엇을 출력합니까?무엇 때문에

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'// c.name 
d[2]['age'] = 3  // c.age 

console.log(aa) //1 
console.log(bb) //2 
console.log(cc)//Object {name:'hello',age:3}==> ,
console.log(dd)//[a,b,Object]

4. 다음 코드는 무엇을 출력합니까?무엇 때문에

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, f1,a 。
console.log(c)//Object{name:'jirengu',age:3},
 f2(c),   ,obj ,C , c ,age 3 ;f1(c.age), c age , , c age 。c.age 3。

5. 다음 수조를 필터하여 정수만 남기고 원수조에서 직접 조작

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
  for(var i in arr){
        if(arr[i]<=0){
          arr.splice(i,1);
          filter(arr);
        }   
  }
  return arr;
}
filter(arr)
console.log(arr) // [3,1,2]

6. 다음 수조를 필터하여 정수만 보존하고 원수조는 변하지 않으며 새 수조를 생성합니다

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
  var j=0;
  var newArr=[];
  for(var i in arr){
    if(arr[i]>0){
        newArr[j]=arr[i];
        j++;
      }
  } 
return newArr; 
}
var arr2 = filter(arr)
console.log(arr2) // [3,1,2]
console.log(arr)  // [3,1,0,-1,-2,2,-5]

7. 깊이 복사 함수를 써서 두 가지 방식으로 실현

// 
function clone(obj){
    var newObject={};
for (var key in obj) {
    if(typeof obj[key] === 'number'||typeof obj[key] === 'boolean'||typeof obj[key] === 'string'||obj[key] ===undefined||obj[key] === null){
      newObject[key]=obj[key];
} else{ 
    newObject[key]=clone(obj[key])
  }
}
return newObject;
}
 
var cloneObj = JSON.parse(JSON.stringify(obj));

좋은 웹페이지 즐겨찾기