JavaScript 함수 호출

함수 호출 시 함수 본문 코드가 실행됩니다.

Javascript 함수에는 4가지 호출 메서드가 있습니다.

일반 함수 호출

메서드 호출

생성자 호출

call() 및 Apply()를 통한 간접 호출


1. 일반적인 함수 호출

가장 일반적으로 사용되는 방법 다음과 같은 함수 호출 메서드:

alert("hello");

var result = add(1, 2);

2. 메서드 호출

//함수 정의

function hello(name) {

Alert('hello,' + name);

};

var user = {};

//사용자 sayHi 속성에 할당됨

user.sayHi = hello;

//메소드 호출

user.sayHi('Zhang San');

일반적인 함수 호출과 메서드 호출 한 가지 차이점: "일반 함수 호출" 메서드에서 함수 호출 컨텍스트(this의 값)는 전역 객체(비엄격 모드)이거나 정의되지 않음(엄격 모드)입니다. "메서드 호출" 메서드에서 이는 현재 개체를 가리킵니다. 이 기능을 사용하면 메서드에 명확한 반환 값이 필요하지 않을 때 이를 직접 반환할 수 있어 "메서드 체이닝"이 실현됩니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
function myFunction(a, b) {
return a * b;
}
document.getElementById("demo").innerHTML = myFunction(10, 2); 
</script>
</body>
</html>

중첩 함수의 이 점: 중첩 함수에서 내부 함수는 외부 함수에서 this를 상속하지 않습니다. 즉, 내부 함수가 메서드로 호출될 때 내부 함수의 this는 현재 호출 개체를 가리킵니다. 내부 함수가 함수로 호출될 때 this의 값은 전역 객체(비엄격 모드)이거나 정의되지 않음(엄격 모드)입니다. 내부 함수에서 외부 함수에 어떻게 접근하나요? 이는 일반적으로 지역 변수에 저장되며 변수를 통해 액세스됩니다.

var obj = {

f : function() {

var self = this;

console.log(this == = obj);//true, 이는 현재 개체를 가리킵니다

                                                                   |

                 console.log(self === obj) ;///true, self는 현재 객체인 외부 this를 가리킵니다.                                           이것은 전역 객체이거나 정의되지 않았습니다. };
3. 생성자 호출

new 키워드를 사용하여 객체를 생성하면 생성자가 호출됩니다. 생성자에 형식 매개변수가 없으면 괄호를 생략할 수 있습니다.

var obj = new Object();

//Equivalent to

var obj = new Object;

생성자를 호출하고 새 개체를 만듭니다. 이 새 개체는 생성자의 호출 컨텍스트(this의 값)가 됩니다.

function User(name) {

this.name=name;

Console.debug(this);

}

var user = new User('张三');

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
function myFunction(arg1, arg2) {
this.firstName = arg1;
    this.lastName  = arg2;
}
var x = new myFunction("John","Doe")
document.getElementById("demo").innerHTML = x.firstName; 
</script>
</body>
</html>

4.

Javascript의 함수도 객체이며 메소드가 있습니다. 그 중 call()과 apply()를 사용하면 간접적으로 함수를 호출할 수 있다. call()의 첫 번째 매개변수는 호출 컨텍스트(즉, this의 값)를 지정하는 데 사용되며, 후속 매개변수는 호출 함수에 전달되는 실제 매개변수입니다.

var name = 'A';

경고 (this.name);

}

showName();//A, 이것은 전역 객체입니다

showName .call(user);//B, 이것은 사용자 객체입니다
apply()는 call()과 유사하지만 차이점은 후속 실제 매개변수가 배열 형식으로 전달되어야 한다는 것입니다(인수 배열). 현재 함수의 내용을 직접 전달할 수 있습니다).

지속적인 학습
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function sum(x,y){ return x+y; } result = sum(2,3); document.write( result ); </script> </head> <body> </body> </html>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~