2-3.함수와 작용역

6262 단어

1. 함수 성명과 함수 표현식은 어떤 차이가 있습니까?

// , , 
function a(){}

// , , 
var a = function(){};

2. 변수의 성명 전치는 무엇입니까?무엇이 함수의 성명 전치입니까?


바로.변수 및var 함수의 성명은 작용역 머리까지 증가합니다
console.log(a)    //undefined, var a , 
var a = 1
console.log(a)    //1
fn()              //haha  function fn(){……} , 
function fn(){
  console.log('haha')
}
    

3.arguments는 무엇입니까?


함수 내부의 클래스 그룹 대상에 사용되며,arguments 대상을 통해 이 함수의 모든 전송 매개 변수를 얻을 수 있습니다.수조처럼 아래 표를 통해 대응하는 값을 얻을 수 있고length 속성도 있지만 수조의 일부 방법 속성을 사용할 수 없습니다
function printPersonInfo(name, age, sex){
  console.log(name);           //xiaoming
  console.log(age);            //10
  console.log(sex);            //male
  console.log(arguments);      //["xiaoming",10,"male"]
  console.log(arguments[0]);   //xiaoming   
  console.log(arguments.length); //3,length 
}
    
printPersonInfo('xiaoming',10,'male')

4. 함수의'재부팅'은 어떻게 실현됩니까?


함수내if판단을 통해 서로 다른 입력은 서로 다른 실행 내용에 대응한다.
//1
function printPeopleInfo(name,age,sex){
  i = arguments.length
  if(i === 1){
    console.log(name);
  } else if (i === 2){
    console.log(name)
    console.log(age)
  } else if(i === 3){
    console.log(name)
    console.log(age)
    console.log(sex)
  }
}

printPeopleInfo('Byron', 26);
printPeopleInfo('Byron', 26, 'male');
//2
function printPeopleInfo(name, age, sex){
    if(name){
      console.log(name);
    }

    if(age){
      console.log(age);
    }

    if(sex){
      console.log(sex);
    }
  }
printPeopleInfo('Byron', 26);
printPeopleInfo('Byron', 26, 'male');

5. 함수 표현식을 즉시 실행하는 것은 무엇입니까?무슨 작용이 있느냐


함수 성명 후 즉시 실행되며, 이때 괄호 등을 통해 해석기가 표현식으로 함수를 처리해야 한다.역할: 역할 영역 격리
(function(){
  var a  = 1;
})();
console.log(a); //undefined

6. 제발 n!,귀속으로 실현하다

function fn(n){
  if (parseInt (n,10) === n){
    if (n === 0){
      return 1
    } else if (n < 0){
      console.log(' ')
      return
    } else if(n === 1){
      return 1;
    } else {
      return (n * fn (n-1));
    }
  } else {
    console.log(' ')
  }
}

7. 코드 출력

    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, ' ');
    /*
      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
    */

8. 함수를 써서 매개 변수의 제곱과

   function sumOfSquares(){
       var sum = 0
       for (var i = 0; i < arguments.length; i++) {
         var a = arguments[i]
         sum += a*a
       }
       return sum
   }
   var result = sumOfSquares(2,3,4)
   var result2 = sumOfSquares(1,3)
   console.log(result)  //29
   console.log(result2)  //10

구.

    console.log(a);  //undefined
    var a = 1;
    console.log(b);  //Uncaught ReferenceError: b is not defined

   /*
    var a
    console.log(a)   //a , , undefined
    a = 1
    console.log(b)   //b , 
   */

십.

sayName('world');  //hello world  
sayAge(10);        //Uncaught TypeError: sayAge is not a function
                      //sayAge , var sayAge , 
function sayName(name){    // function , 
   console.log('hello ', name);
}
var sayAge = function(age){  
   console.log(age);
};

십일.

  var x = 10
  bar()     //10
  function foo() {
    console.log(x)   
  }
  function bar(){
    var x = 30
    foo()
  }

  /*
  1.
  globalContext = {
    AO:{
      x:10
      foo:function
      bar:function
    }
  }
  foo.[[scope]] = globalContext
  bar.[[scope]] = globalContext
  
  2.
  barContext = {
    AO:{
      x:30
    },Scope:globalContext
  }
  
  3.
  fooContext = {
    AO:{},
    Scope:globalContext
  }
  */

십이.

  var x = 10;
  bar() 
  function bar(){
    var x = 30;
    function foo(){
      console.log(x)     //30
    }
    foo();
  } 
    
  /*
  1.
  globalContext = {
    AO:{
      x:10
      bar:function
    }
  }
  bar.[[scope]] = globalContext
  
  2.
  barContext = {
    AO:{
      x:30
      foo:function
    },
    Scope:globalContext
  }
  foo.[[scope]] = barContext
  
  3.
  fooContext = {
    AO:{},
    Scope:barContext
  }
  */

십삼.

  var x = 10;
  bar() 
  function bar(){
    var x = 30;
    (function (){
      console.log(x)         //30
    })()
  }
  
  /*
  1.
  globalContex = {
    AO:{
      x:10
      bar:function
    }
  }
  bar.[[scope]] = globalContext
  
  2.
  barContext = {
    AO:{
      x:30
    },
    Scope:globalContext
  }
  */

십사.

var a = 1;

function fn(){
  console.log(a)          // 
  var a = 5
  console.log(a)          // 
  a++
  var a
  fn3()
  fn2()
  console.log(a)          // 

  function fn2(){
    console.log(a)        // 
    a = 20
  }
}

function fn3(){
  console.log(a)          // 
  a = 200
}

fn()
console.log(a)            // 

//undefined 5 1 6 20 200

/*
1.
globalContext = {
  AO:{
    a:1 | a:200             // :200
    fn:function
    fn3:funciton
  }
}
fn.[[scope]] = globalContext
fn3.[[scope]] = globalContext

2.
fnContext = {
  AO:{
    a | a:5 | a:6 | a:20  // :undefined, :5
                          // :20
    fn2:funciton
  },
  scope:globalContext
}
fn2.[[scope]] = fnContext

3.
fn3Context = {
  AO:{
                  // :1
  },
  Scope:globalContext
}

4.
fn2Context = {
  AO:{
                  // :6
  },scope:fnContext
}            
*/

좋은 웹페이지 즐겨찾기