상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 함수의 호출 방식에 따른 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 함수의 호출 방식은 여러 가지가 있으며, 각 방식에 따라 함수의 동작 방식과 `this` 키워드의 바인딩이 달라집니다. 함수 호출 방식에 따른 차이를 이해하는 것은 자<a href='https://sangseek.com/sangseeks/바스크/ko'>바스크</a>립트의 동작 원리를 이해하는 데 매우 중요합니다. 아래에서는 주요 함수 호출 방식과 그에 따른 차이점을 설명하겠습니다. 1. 일반 함수 호출 일반 함수 호출은 가장 기본적인 형태입니다. 함수가 정의된 후, 이름을 통해 호출합니다. ```javascript function greet() { console.log("Hello, World!"); } greet(); // "Hello, World!" ``` - `this` 바인딩 : 일반 함수 호출에서 `this`는 전역 객체를 가리킵니다. 브라우저 환경에서는 `window` 객체가 됩니다. 엄격 모드(`'use strict'`)에서는 `<a href='https://sangseek.com/sangseeks/undefined/ko'>undefined</a>`가 됩니다. 2. 메서드 호출 메서드 호출은 객체의 속성으로 정의된 함수를 호출하는 방식입니다. ```javascript const person = { name: "Alice", greet: function() { console.log(`Hello, ${this.name}!`); } }; person.greet(); // "Hello, Alice!" ``` - `this` 바인딩 : 메서드 호출에서 `this`는 메서드를 호출한 객체를 가리킵니다. 위 예제에서는 `this`가 `person` 객체를 참조합니다. 3. 생성자 호출 생성자 함수는 `new` 키워드를 사용하여 호출됩니다. 이 방식은 새로운 객체를 생성합니다. ```javascript function Person(name) { this.name = name; } const alice = new Person("Alice"); console.log(alice.name); // "Alice" ``` - `this` 바인딩 : 생성자 호출에서 `this`는 새로 생성된 객체를 가리킵니다. 생성자 함수 내에서 `this`에 속성을 추가하면, 그 속성은 새로 생성된 객체의 속성이 됩니다. 4. `call`, `apply`, `bind` 메서드 이 메서드들은 함수의 `this` 값을 명시적으로 설정할 수 있게 해줍니다. - `call` : 첫 번째 인자로 `this`로 사용할 객체를 받고, 나머지 인자는 함수에 전달할 <a href='https://sangseek.com/sangseeks/인수/ko'>인수</a>입니다. ```javascript function greet() { console.log(`Hello, ${this.name}!`); } const person = { name: "Alice" }; greet.call(person); // "Hello, Alice!" ``` - `apply` : `call`과 비슷하지만, 두 번째 인자로 배열 형태의 인수를 받습니다. ```javascript function greet(greeting) { console.log(`${greeting}, ${this.name}!`); } const person = { name: "Alice" }; greet.apply(person, ["Hi"]); // "Hi, Alice!" ``` - `bind` : 새로운 함수를 반환하며, 이 함수는 `this`가 지정된 객체로 바인딩됩니다. ```javascript function greet() { console.log(`Hello, ${this.name}!`); } const person = { name: "Alice" }; const greetAlice = greet.bind(person); greetAlice(); // "Hello, Alice!" ``` 5. <a href='https://sangseek.com/sangseeks/화살표 함수/ko'>화살표 함수</a> 화살표 함수는 `this` 바인딩이 다릅니다. 화살표 함수는 자신만의 `this`를 가지지 않고, 외부 스코프의 `this`를 참조합니다. ```javascript const person = { name: "Alice", greet: () => { console.log(`Hello, ${this.name}!`); } }; person.greet(); // "Hello, undefined!" (전역의 this.name을 참조) ``` 결론 자바스크립트에서 함수의 호출 방식에 따라 `this`의 바인딩과 함수의 동작 방식이 달라집니다. 일반 함수 호출, 메서드 호출, 생성자 호출, `call`, `apply`, `bind`, 화살표 함수 등 각각의 호출 방식은 특정한 상황에서 유용하게 사용될 수 있습니다. 이러한 차이를 이해하고 적절히 활용하는 것이 자바스크립트 프로그래밍에서 매우 중요합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기