2017-12-19 16 views
1

를 인쇄 함수 내에서 :화살표 기능은 내가 선택 메시지 입력과 함께 "삐"하는 방법을 추가 "자동차"라는 이름의 함수에서

console.log(this.name + ': ' + 'Beeeeep!' + (message ? ' ' + message : '')) 

나는 다음을 썼다지만, 출력은 나에게 리터럴 자체의 내용을 보여줍니다

console.log(`${this.name}: Beeeeep! ${ (message) => { 
    if (message) return `${message}`; 
    return ' '; 
    }}`); 

출력 (this.name = 'myCar라는'에 대한) :

myCar: Beeeeep! (message) => { 
    if (message) return `${message}`; 
    return ''; 
    } 

왜 대신 transpile 그것의 문자의 내용을 기록 하는가?


*

은 나뿐만 아니라 작동하는 간단한 방법으로 그것을 작성하는 방법을 알아 냈 :

console.log(`${this.name}: Beeeeep! ${message || ''}`) 

을하지만 난 여전히 첫 번째 코드에서 잘못 이해하고 싶다.

답변

6

이 경우는 본문과 함수 정의를 템플릿 리터럴 문자열에 전달하기 때문에 발생합니다. 함수의 결과를 문자열에 표시하려면 해당 함수의 본문이 포함 된 문자열로 전달되지 않으면 함수를 동시에 사용하고 호출해야합니다. 이를 위해 IIFE를 사용할 수 있습니다.

console.log(`${this.name}: Beeeeep! ${((message) => { 
    if (message) return `${message}`; 
    return ' '; 
})()}`); 
1

필자의 구현은 단지 함수를 정의하므로 템플릿 리터럴이 함수 자체를 인쇄하기 때문입니다.

기능의 출력을 인쇄하려고하므로 화살표 기능을 호출해야합니다. 나는 삼항 연산자를 사용하기 위해 함수를 변경했으며 함수를 호출하기 위해 IIFE를 사용하여 출력을 원하는대로 인쇄했습니다.

console.log(`${this.name}: Beeeeep! ${((message) => message ? message : ' ')('Test')}`);