JS 함수 및 역할 영역 문제
1. 함수 표현식을 즉시 실행하는 것은 무엇입니까?무슨 작용이 있느냐  
함수 표현식은
일반적인 쓰기 방법: (function () {alert ('익명 함수')} ()
왜 한 쌍의 괄호로 익명 함수를 싸야 합니까?괄호를 넣지 않고 function () {alert ('익명 함수')} () 로 쓰면 오류가 발생합니다. function 키워드가 줄에 나타나서 일률적으로 문장으로 해석되기 때문입니다.따라서 자바스크립트 엔진은 줄의 첫 번째가 function 키워드인 것을 보고 이 단락은 함수의 정의이며 괄호로 끝내서는 안 된다고 생각해서 잘못 보고했습니다.해결 방법은 function이 줄에 나타나지 않도록 하는 것이다. 따라서 물건을 추가할 수 있다. 다음과 같은 방법이 있다.
(function(){alert(' ')} ()) //  
(function(){alert(' ')}) () // 
!function(){alert(' ')}() //  , , 。
+function(){alert(' ')}()
-function(){alert(' ')}()
~function(){alert(' ')}()
void function(){alert(' ')}()
new function(){alert(' ')}()
  그러면 함수 표현식을 즉각 집행하는 것은 어떤 작용을 합니까?역할은 독립된 역할 영역을 만드는 것입니다.이 작용역 안의 변수는 바깥에 접근할 수 없기 때문에 변수 오염을 피할 수 있다
2. 제발!,귀속으로 실현하다  function recursion(n) {
  if (n === 1) {
    return 1;
  }
  return n * recursion(n-1);
}
var result = recursion(10);  
console.log(result);     // n 10 , :3628800
  
3. 다음 코드는 무엇을 출력합니까?  function getInfo(name, age, sex){
    console.log('name:',name);
    console.log('age:', age);
    console.log('sex:', sex);
    console.log(arguments);
    arguments[0] = 'valley';
    console.log('name', name);
}
getInfo(' ', 2, ' ');
getInfo(' ', 3);
getInfo(' ');
  
get Info('굶주린 계곡', 2,'남') 출력 호출:name:  
age: 2
sex:  
[" ",2," "]
name valley
  
getInfo 호출('작은 골짜기', 3) 출력name:  
age: 3
sex: undefined
[" ",3]
name valley
  
getInfo('남') 출력 호출:name:  
age: undefined
sex: undefined
[" "]
name valley
  
주: 1.함수에 매개 변수를 전송할 때는 순서대로 전송하고, 매개 변수가 없으면 undefined입니다.2. 함수 내부에서arguments 대상을 사용하여 이 함수에 전송된 모든 매개 변수를 얻을 수 있다
4. 함수를 써서 매개 변수의 제곱을 되돌려줍니까?  function sumOfSquares() {
  var squaresSum= 0
  var paraNum = arguments.length
  for (var i = 0; i < paraNum; i++) {
    squaresSum = squaresSum + arguments[i]*arguments[i]
  }
  return squaresSum
}
var result = sumOfSquares(2,3,4)
var result2 = sumOfSquares(1,3)
console.log(result)  //29
console.log(result2)  //10
  
주:arguments.length는 실삼에 전입된 개수를 대표한다
5. 아래 코드의 출력은?무엇 때문에  console.log(a);
var a = 1;
console.log(b);
  
출력:undefined
error(b is not defined)
  
주: JS에서 변수 성명이 앞당겨지기 때문에 상기 코드는var a
console.log(a);   //undefined
a = 1;
console.log(b);   // ,error
  
6. 다음 코드의 출력은?무엇 때문에  sayName('world');
sayAge(10);
function sayName(name){
    console.log('hello ', name);
}
var sayAge = function(age){
    console.log(age);
};
  
출력:hello world
error(sayAge is not a function)
  
주: JS의 함수 성명은 변수 성명과 마찬가지로 앞당겨지기 때문에 상기 코드는function sayName(name){
    console.log('hello ', name);
}
var sayAge
sayName('world');          // hello world
sayAge(10);                // ,sayAge 
sayAge = function(age){
    console.log(age);
};
  
7. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10
bar() 
function foo() {
  console.log(x)
}
function bar(){
  var x = 30
  foo()
}
  
출력 결과: 10 이유: 1.우선foo()와bar() 함수의 성명이 앞당겨지기 때문에bar()는 정상적으로 실행할 수 있습니다.이어서 bar () 는 foo () 를 호출했고, foo () 는 x 3을 출력했습니다.foo() 함수 내부에서 x 변수를 찾지 못했습니다. 이때 JS는 이 함수가 있는 역할을 설명하는 영역에서 찾아 위로 올라갑니다. (위 코드에서 가장 바깥쪽에 있는 x, 즉 10)
8. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}
  
출력 결과: 30 이유와 같이foo()가 표시하는 작용역의 x의 값은 30
9. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과: 2 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 2
10. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() // 
  
출력 결과: 1 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 1
11. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과는 다음과 같다. undefined 이 문제는 특히 주의해야 한다. 이 문제와 위의 차이점은 변수가 앞당겨져서 fn2()의 집행은 a변수가 성명한 후에 값을 부여하기 전(a는 이때 성명만 하고 값을 부여하지 않았기 때문에 undefined), 즉 함수 fn3의 실제 집행은 다음과 같다.  function fn3(){
    function fn2(){
      console.log(a)
    }
    var a
    fn2()
    a = 4
  }
  
12. 다음 코드는 무엇을 출력합니까?무엇 때문에  var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  
출력:false
{a: 1, b: 2}
true
  
이유: 대상의 상등, 그들의 인용이 메모리의 같은 구역을 가리킬 때만 상등하다. 즉, 그들이 창고 메모리에 있는 인용 주소가 같은obj1과obj2는 각각 두 개의 다른 대상 인용이다. 그 안에 저장된 주소는 다르다. 즉, 그들이 가리키는 구역은 다르다. 실시간 구역의 내용은 같고 같지 않기 때문에obj1=obj2를 통해obj2에 저장된 주소를obj1에게 부여한 후에obj1과obj2는 같은 구역을 가리키기 때문에 마지막에 둘은 같다
13. 다음 코드는 무엇을 출력합니까?무엇 때문에  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) 
console.log(c) 
  
출력:1
{name: "jirengu", age: 3}
  
이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
function recursion(n) {
  if (n === 1) {
    return 1;
  }
  return n * recursion(n-1);
}
var result = recursion(10);  
console.log(result);     // n 10 , :3628800
function getInfo(name, age, sex){
    console.log('name:',name);
    console.log('age:', age);
    console.log('sex:', sex);
    console.log(arguments);
    arguments[0] = 'valley';
    console.log('name', name);
}
getInfo(' ', 2, ' ');
getInfo(' ', 3);
getInfo(' ');
  get Info('굶주린 계곡', 2,'남') 출력 호출:
name:  
age: 2
sex:  
[" ",2," "]
name valley
  getInfo 호출('작은 골짜기', 3) 출력
name:  
age: 3
sex: undefined
[" ",3]
name valley
  getInfo('남') 출력 호출:
name:  
age: undefined
sex: undefined
[" "]
name valley
  주: 1.함수에 매개 변수를 전송할 때는 순서대로 전송하고, 매개 변수가 없으면 undefined입니다.2. 함수 내부에서arguments 대상을 사용하여 이 함수에 전송된 모든 매개 변수를 얻을 수 있다
4. 함수를 써서 매개 변수의 제곱을 되돌려줍니까?  function sumOfSquares() {
  var squaresSum= 0
  var paraNum = arguments.length
  for (var i = 0; i < paraNum; i++) {
    squaresSum = squaresSum + arguments[i]*arguments[i]
  }
  return squaresSum
}
var result = sumOfSquares(2,3,4)
var result2 = sumOfSquares(1,3)
console.log(result)  //29
console.log(result2)  //10
  
주:arguments.length는 실삼에 전입된 개수를 대표한다
5. 아래 코드의 출력은?무엇 때문에  console.log(a);
var a = 1;
console.log(b);
  
출력:undefined
error(b is not defined)
  
주: JS에서 변수 성명이 앞당겨지기 때문에 상기 코드는var a
console.log(a);   //undefined
a = 1;
console.log(b);   // ,error
  
6. 다음 코드의 출력은?무엇 때문에  sayName('world');
sayAge(10);
function sayName(name){
    console.log('hello ', name);
}
var sayAge = function(age){
    console.log(age);
};
  
출력:hello world
error(sayAge is not a function)
  
주: JS의 함수 성명은 변수 성명과 마찬가지로 앞당겨지기 때문에 상기 코드는function sayName(name){
    console.log('hello ', name);
}
var sayAge
sayName('world');          // hello world
sayAge(10);                // ,sayAge 
sayAge = function(age){
    console.log(age);
};
  
7. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10
bar() 
function foo() {
  console.log(x)
}
function bar(){
  var x = 30
  foo()
}
  
출력 결과: 10 이유: 1.우선foo()와bar() 함수의 성명이 앞당겨지기 때문에bar()는 정상적으로 실행할 수 있습니다.이어서 bar () 는 foo () 를 호출했고, foo () 는 x 3을 출력했습니다.foo() 함수 내부에서 x 변수를 찾지 못했습니다. 이때 JS는 이 함수가 있는 역할을 설명하는 영역에서 찾아 위로 올라갑니다. (위 코드에서 가장 바깥쪽에 있는 x, 즉 10)
8. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}
  
출력 결과: 30 이유와 같이foo()가 표시하는 작용역의 x의 값은 30
9. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과: 2 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 2
10. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() // 
  
출력 결과: 1 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 1
11. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과는 다음과 같다. undefined 이 문제는 특히 주의해야 한다. 이 문제와 위의 차이점은 변수가 앞당겨져서 fn2()의 집행은 a변수가 성명한 후에 값을 부여하기 전(a는 이때 성명만 하고 값을 부여하지 않았기 때문에 undefined), 즉 함수 fn3의 실제 집행은 다음과 같다.  function fn3(){
    function fn2(){
      console.log(a)
    }
    var a
    fn2()
    a = 4
  }
  
12. 다음 코드는 무엇을 출력합니까?무엇 때문에  var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  
출력:false
{a: 1, b: 2}
true
  
이유: 대상의 상등, 그들의 인용이 메모리의 같은 구역을 가리킬 때만 상등하다. 즉, 그들이 창고 메모리에 있는 인용 주소가 같은obj1과obj2는 각각 두 개의 다른 대상 인용이다. 그 안에 저장된 주소는 다르다. 즉, 그들이 가리키는 구역은 다르다. 실시간 구역의 내용은 같고 같지 않기 때문에obj1=obj2를 통해obj2에 저장된 주소를obj1에게 부여한 후에obj1과obj2는 같은 구역을 가리키기 때문에 마지막에 둘은 같다
13. 다음 코드는 무엇을 출력합니까?무엇 때문에  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) 
console.log(c) 
  
출력:1
{name: "jirengu", age: 3}
  
이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
function sumOfSquares() {
  var squaresSum= 0
  var paraNum = arguments.length
  for (var i = 0; i < paraNum; i++) {
    squaresSum = squaresSum + arguments[i]*arguments[i]
  }
  return squaresSum
}
var result = sumOfSquares(2,3,4)
var result2 = sumOfSquares(1,3)
console.log(result)  //29
console.log(result2)  //10
console.log(a);
var a = 1;
console.log(b);
  출력:
undefined
error(b is not defined)
  주: JS에서 변수 성명이 앞당겨지기 때문에 상기 코드는
var a
console.log(a);   //undefined
a = 1;
console.log(b);   // ,error
  6. 다음 코드의 출력은?무엇 때문에  sayName('world');
sayAge(10);
function sayName(name){
    console.log('hello ', name);
}
var sayAge = function(age){
    console.log(age);
};
  
출력:hello world
error(sayAge is not a function)
  
주: JS의 함수 성명은 변수 성명과 마찬가지로 앞당겨지기 때문에 상기 코드는function sayName(name){
    console.log('hello ', name);
}
var sayAge
sayName('world');          // hello world
sayAge(10);                // ,sayAge 
sayAge = function(age){
    console.log(age);
};
  
7. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10
bar() 
function foo() {
  console.log(x)
}
function bar(){
  var x = 30
  foo()
}
  
출력 결과: 10 이유: 1.우선foo()와bar() 함수의 성명이 앞당겨지기 때문에bar()는 정상적으로 실행할 수 있습니다.이어서 bar () 는 foo () 를 호출했고, foo () 는 x 3을 출력했습니다.foo() 함수 내부에서 x 변수를 찾지 못했습니다. 이때 JS는 이 함수가 있는 역할을 설명하는 영역에서 찾아 위로 올라갑니다. (위 코드에서 가장 바깥쪽에 있는 x, 즉 10)
8. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}
  
출력 결과: 30 이유와 같이foo()가 표시하는 작용역의 x의 값은 30
9. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과: 2 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 2
10. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() // 
  
출력 결과: 1 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 1
11. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과는 다음과 같다. undefined 이 문제는 특히 주의해야 한다. 이 문제와 위의 차이점은 변수가 앞당겨져서 fn2()의 집행은 a변수가 성명한 후에 값을 부여하기 전(a는 이때 성명만 하고 값을 부여하지 않았기 때문에 undefined), 즉 함수 fn3의 실제 집행은 다음과 같다.  function fn3(){
    function fn2(){
      console.log(a)
    }
    var a
    fn2()
    a = 4
  }
  
12. 다음 코드는 무엇을 출력합니까?무엇 때문에  var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  
출력:false
{a: 1, b: 2}
true
  
이유: 대상의 상등, 그들의 인용이 메모리의 같은 구역을 가리킬 때만 상등하다. 즉, 그들이 창고 메모리에 있는 인용 주소가 같은obj1과obj2는 각각 두 개의 다른 대상 인용이다. 그 안에 저장된 주소는 다르다. 즉, 그들이 가리키는 구역은 다르다. 실시간 구역의 내용은 같고 같지 않기 때문에obj1=obj2를 통해obj2에 저장된 주소를obj1에게 부여한 후에obj1과obj2는 같은 구역을 가리키기 때문에 마지막에 둘은 같다
13. 다음 코드는 무엇을 출력합니까?무엇 때문에  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) 
console.log(c) 
  
출력:1
{name: "jirengu", age: 3}
  
이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
sayName('world');
sayAge(10);
function sayName(name){
    console.log('hello ', name);
}
var sayAge = function(age){
    console.log(age);
};
hello world
error(sayAge is not a function)
function sayName(name){
    console.log('hello ', name);
}
var sayAge
sayName('world');          // hello world
sayAge(10);                // ,sayAge 
sayAge = function(age){
    console.log(age);
};
var x = 10
bar() 
function foo() {
  console.log(x)
}
function bar(){
  var x = 30
  foo()
}
  출력 결과: 10 이유: 1.우선foo()와bar() 함수의 성명이 앞당겨지기 때문에bar()는 정상적으로 실행할 수 있습니다.이어서 bar () 는 foo () 를 호출했고, foo () 는 x 3을 출력했습니다.foo() 함수 내부에서 x 변수를 찾지 못했습니다. 이때 JS는 이 함수가 있는 역할을 설명하는 영역에서 찾아 위로 올라갑니다. (위 코드에서 가장 바깥쪽에 있는 x, 즉 10)
8. 다음 코드는 무엇을 출력합니까?무엇 때문에  var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}
  
출력 결과: 30 이유와 같이foo()가 표시하는 작용역의 x의 값은 30
9. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과: 2 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 2
10. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() // 
  
출력 결과: 1 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 1
11. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과는 다음과 같다. undefined 이 문제는 특히 주의해야 한다. 이 문제와 위의 차이점은 변수가 앞당겨져서 fn2()의 집행은 a변수가 성명한 후에 값을 부여하기 전(a는 이때 성명만 하고 값을 부여하지 않았기 때문에 undefined), 즉 함수 fn3의 실제 집행은 다음과 같다.  function fn3(){
    function fn2(){
      console.log(a)
    }
    var a
    fn2()
    a = 4
  }
  
12. 다음 코드는 무엇을 출력합니까?무엇 때문에  var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  
출력:false
{a: 1, b: 2}
true
  
이유: 대상의 상등, 그들의 인용이 메모리의 같은 구역을 가리킬 때만 상등하다. 즉, 그들이 창고 메모리에 있는 인용 주소가 같은obj1과obj2는 각각 두 개의 다른 대상 인용이다. 그 안에 저장된 주소는 다르다. 즉, 그들이 가리키는 구역은 다르다. 실시간 구역의 내용은 같고 같지 않기 때문에obj1=obj2를 통해obj2에 저장된 주소를obj1에게 부여한 후에obj1과obj2는 같은 구역을 가리키기 때문에 마지막에 둘은 같다
13. 다음 코드는 무엇을 출력합니까?무엇 때문에  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) 
console.log(c) 
  
출력:1
{name: "jirengu", age: 3}
  
이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}
var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  출력 결과: 2 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 2
10. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() // 
  
출력 결과: 1 이유 동제 7, fn2 () 성명이 있는 작용역의 a의 값은 1
11. 다음 코드는 무엇을 출력합니까?무엇 때문에  var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  
출력 결과는 다음과 같다. undefined 이 문제는 특히 주의해야 한다. 이 문제와 위의 차이점은 변수가 앞당겨져서 fn2()의 집행은 a변수가 성명한 후에 값을 부여하기 전(a는 이때 성명만 하고 값을 부여하지 않았기 때문에 undefined), 즉 함수 fn3의 실제 집행은 다음과 같다.  function fn3(){
    function fn2(){
      console.log(a)
    }
    var a
    fn2()
    a = 4
  }
  
12. 다음 코드는 무엇을 출력합니까?무엇 때문에  var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  
출력:false
{a: 1, b: 2}
true
  
이유: 대상의 상등, 그들의 인용이 메모리의 같은 구역을 가리킬 때만 상등하다. 즉, 그들이 창고 메모리에 있는 인용 주소가 같은obj1과obj2는 각각 두 개의 다른 대상 인용이다. 그 안에 저장된 주소는 다르다. 즉, 그들이 가리키는 구역은 다르다. 실시간 구역의 내용은 같고 같지 않기 때문에obj1=obj2를 통해obj2에 저장된 주소를obj1에게 부여한 후에obj1과obj2는 같은 구역을 가리키기 때문에 마지막에 둘은 같다
13. 다음 코드는 무엇을 출력합니까?무엇 때문에  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) 
console.log(c) 
  
출력:1
{name: "jirengu", age: 3}
  
이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() // 
var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() // 
  출력 결과는 다음과 같다. undefined 이 문제는 특히 주의해야 한다. 이 문제와 위의 차이점은 변수가 앞당겨져서 fn2()의 집행은 a변수가 성명한 후에 값을 부여하기 전(a는 이때 성명만 하고 값을 부여하지 않았기 때문에 undefined), 즉 함수 fn3의 실제 집행은 다음과 같다.
  function fn3(){
    function fn2(){
      console.log(a)
    }
    var a
    fn2()
    a = 4
  }
  12. 다음 코드는 무엇을 출력합니까?무엇 때문에  var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
  
출력:false
{a: 1, b: 2}
true
  
이유: 대상의 상등, 그들의 인용이 메모리의 같은 구역을 가리킬 때만 상등하다. 즉, 그들이 창고 메모리에 있는 인용 주소가 같은obj1과obj2는 각각 두 개의 다른 대상 인용이다. 그 안에 저장된 주소는 다르다. 즉, 그들이 가리키는 구역은 다르다. 실시간 구역의 내용은 같고 같지 않기 때문에obj1=obj2를 통해obj2에 저장된 주소를obj1에게 부여한 후에obj1과obj2는 같은 구역을 가리키기 때문에 마지막에 둘은 같다
13. 다음 코드는 무엇을 출력합니까?무엇 때문에  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) 
console.log(c) 
  
출력:1
{name: "jirengu", age: 3}
  
이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
false
{a: 1, b: 2}
true
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) 
console.log(c) 
  출력:
1
{name: "jirengu", age: 3}
  이유: a는 실삼으로 f1의 형삼 n에게 전달되었는데 a의 값을 n에게 부여한 다음에 +n, 그리고 n의 값을 2로 바꾸는 것과 같다. a의 값은 여전히 1c로 실삼으로 f2의 형삼 obj에 전달되었다. c는 하나의 대상이다. 그 안에 저장된 것은 그 안에 있는 내용이 있는 메모리 구역의 주소를 가리키고 f2에서 이 주소가 가리키는 메모리 구역 안의age를 전++로 한다.그래서 이 메모리 영역에서age의 실제 값을 바꾸었다. 즉age는 마지막에 3을 얻어 c.age를 실참으로 f1의 형삼 n에게 전달했고 여전히age를 하나의 값으로 n에게 부여했다. age 자체의 주를 바꾸지 않았다. 값의 전달은 그 자체를 바꿀 수 없고 인용된 전달이 있어야 한다.
14. 딥 카피 함수 쓰기  
얕은 복사: 문자열 유형에 대해 얕은 복사는 값에 대한 복사이고 대상에 대해 얕은 복사는 대상 주소에 대한 복사이며 새로운 창고를 열지 않았다. 즉, 복사의 결과는 두 대상이 같은 주소를 가리키고 그 중의 한 대상의 속성을 수정하면 다른 대상의 속성도 바뀐다.얕은 복사본의 경우 하위 객체와 하위 객체 아래의 객체가 모두 공용됩니다.간단한 복제 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
  
깊은 복사: 깊은 복사는 새로운 창고를 개척하는 것이다. 두 대상은 두 개의 서로 다른 주소, 즉 더미 속의 서로 다른 공간을 가리키며 한 대상의 속성을 수정하면 다른 대상의 속성을 바꾸지 않는다.심층 복사는 하위 객체와 하위 객체 아래의 객체를 복제하며 새 객체와 이전 객체는 공통 영역이 아닙니다.딥 카피 구현 함수:var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
  
자바스크립트의 깊은 복사와 얕은 복사에 대한 대답을 참고하시겠습니까?무엇이 즉시 실행 함수입니까?무슨 작용이 있습니까?
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function shallowCopy(oldObj) {
  var newObj = {}
  for (var i in oldObj) {
    if (oldObj.hasOwnProperty(i)) {  //hasOwnProperty() ( ) 。 , true, false
      newObj[i] = oldObj[i]
    }
  }
  return newObj
}
var newObject = shallowCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //true 
console.log(newObject.friends == oldObject.friends)     //true, true newObject , oldObject                       
var oldObject = {name:" ",
                 age:25,
                 sex:" ",
                 city:" ",
                 wife:{name:" ", sex:" ", age:24, city:" "},
                 friends:[" ", " ", " "]
                 }
function deepCopy(oldObj) {
  var newObj = {}
  for (var key in oldObj) {
    if (typeof oldObj[key] === 'object') {
      newObj[key] = deepCopy(oldObj[key])  // 
    } else {
      newObj[key] = oldObj[key]   // 
    }
  }
  return newObj
}
var newObject = deepCopy(oldObject)
console.log(newObject)                                 //newObject oldObject 
console.log(newObject.wife == oldObject.wife)          //false
console.log(newObject.friends == oldObject.friends)     //false, false newObject , oldObject   
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.