오늘은 특정 함선들에게만 존재하는 Special Mode에 대해 알아보려고 합니다.

Specail Mode는 Bombard / Sniper / Defence / Recharge / Siege 총 5가지 모드가 있습니다.

Special Mode는 활성 비활성화가 자유롭고 끄고 나서 다시 활성화하는데 약간의 쿨타임이 존재합니다.

하나씩 확인해보도록 합시다.

 

Bombard Mode

첫 번째로 Bombard Mode입니다.

Frigates에 Stealth Bombers 함선들이 가지고 있는 Special Mode입니다.

조용히 은신해서 진입한 후 Bombard Mode를 켜고 폭딜을 넣을 수 있을 것 같네요.

다만 Bombard Mode를 활성화 시 이속이 느려지니 상황에 맞게 잘 사용해야 할 것 같습니다.

 

사용 가능 함선

 - Tech Level 6 : Manticore, Hound, Purifier, Nemesis

 - Tech Level 9 : Manticore II, Hound II, Purifier II, Nemesis II

 

 

 

Bombard Mode 사용하는 영상입니다.

활성화 시 급격하게 속도가 내려가는 걸 볼 수 있습니다.

 

 


 

Sniper Mode

두 번째로 Sniper Mode입니다.

멀리서 공격하는 것을 좋아하시는 분들을 위한 Sniper Mode입니다.

Sniper Mode 활성화 시 사거리가 올라가지만 Ship speed가 매우 느려지므로

Bombard Mode와 마찬가지로 상황에 맞게 잘 사용해야 할 것 같네요.

 

 

사용 가능 함선

 - Tech Level 6 : Corax Sniper, Talwar Sniper, Dragoon Sniper, Algos Sniper

 - Tech Level 8 : Caracal Sniper, Stabber Sniper, Omen Sniper, Vexor Sniper

 

 

사거리는 상당히 증가하지만 대미지는 반으로 줄어드네요.

상황에 따라서 잘 써야 될 것 같네요.

 

 


 

Defense Mode

세 번째로 Defense Mode입니다.

Defense Mode는 Industrail Ships이 가지고 있는 Special Mode입니다.

수송선들이 물렸을 경우 조금이나마 살려주기 위해 해당 Special Mode가 있는 것 같네요.

방어력은 엄청나게 올라가지만 공격력도 엄청나게 내려가기 때문에 탱킹용으로만 사용이 가능할 것 같습니다.

 

사용 가능 함선

 - Tech Level 7 : Nereus Combat

 - Tech Level 8 : Badger, Wreathe, Sigil, Nereus

 - Tech Level 10 : Badger II, Wreathe II, Sigil II, Nereus II, Humpback Combat

 

 

 

 

Defense mode 활성화 시 사진입니다.

변태 같은 세팅이어서 어디 쓸데가 많이 없을 것 같습니다.

게이트 캠핑을 역을 뚫을 때 낚시용으로 사용하면 좋을 것 같다는 생각이 듭니다.

 

 


 

Recharge Mode

네 번째로 Recharge Mode입니다.

Recharge Mode는 Logistics 함선들이 가지고 있는 Special Mode입니다.

활성화 시 Capacitor 충전 시간이 감소해서 폭힐이 가능하지만,

Signal Radius가 증가하고 스피드가 떨어지기 때문에 PVP시에는 타겟팅이 될 확률이 높습니다.

안전한 위치에서 Recharge Mode를 활성화시켜야 할 것 같네요.

 

 

사용 가능 함선

 - Tech Level 7 : Osprey, Scythe, Augoror, Exequror

 - Tech Level 9 : Drake Logistics, Hurricane Logistics, Harbinger Logistics, Brutix Logistics

 

 

 

 


 

Siege Mode

다섯 번째로 Seige Mode입니다.

Seige Mode는 Tech Level 10 Battleship 함선들이 가지고 있는 Special Mode입니다.

아직 Tech Level 10이 되려면 한참 남았기 때문에 정확한 정보가 없어

EVE Echoes Discode 채널에서 구한 Siege Mode 정보를 작성하였습니다.

 

 

사용 가능 함선

 - Tech Level 10 : Raven Striker, Maelstrom Striker, Apocalypse Striker, Megathron Striker

 

Siege Mode

 - Turret Tracking Speed : -95%

 - Missile Explosion Velocity : -90%

 - Missile Explosion Radius : +1000%

 - Ship Flight Velocity : -99%

 - Ship Signature Radius : +100%

 - All Damage : +100%


얼른 Tech Level 10이 되어서 어떤 기능인지 확인해보고 싶네요.

 

 

오늘은 이렇게 Special Mode에 대해 알아봤습니다.

혹시 빠저 있는 Special Mode가 있거나 잘못된 정보가 있으면 댓글로 말씀 부탁드립니다.

 

 

오늘은 리트리버에 어떤 Rig를 장착하였을 때 효율이 좋은지 확인해보려고 합니다.

내용이 길기 떄문에 바쁘신 분들을 위해 두줄 요약을 먼저 작성하였습니다.

 

* 두줄요약

[ 속도 x 2 + 효율 x 1 ] > [ 속도 x 3 ] : Strip Mining 5 + Advanced Strip Mining 1 스킬 미만일 경우

[ 속도 x 3 ] > [ 속도 x 2 + 효율 x 1 ] : Strip Mining 5 + Advanced Strip Mining 1 스킬 이상일 경우

 

 

자세한 내용이 궁금하시면 아래 글을 참고해주세요.

 

첫 번째,  스킬을 찍지 않았을 경우

계산식

 - 채광 효율 : Base yield * Ship Bonus * (Skill + Rig)

 

장착 장비

 - MK7 Strip Miner : 579m3
 - Miner Efficiency Upgrade I : 20%
 - Miner Circulation Accelerator I : -20%

 

[ 속도 x 2 + 효율 x 1 ]

채광 효율
579 * (1 + 0.2) = 694.8m3

채광 시간 계산

20% + (20% * 0.8 * 0.87) = -33.90%
위 계산식을 참고하여 계산을 해보면 감소되는 채광 시간은 33.90% 입니다.

 

180 - (180 * 0.339) = 180 - 61.02 = 118.98

계산 결과
694.8m3/119sec -> 5.83m3/sec

 

[ 속도 x 3 ]

채광 효율
579m3


채광 시간 계산
((1 - 0.2) * (1 - (0.2 * 0.869)) * (1 - (0.2 * 0.571))) - 1 = (0.8 * 0.8262 * 0.8858) - 1 = 0.5854 - 1 = -0.4145

위 계산식을 참고하여 계산을 해보면 감소되는 채광 시간은 -41.45% 입니다.

 

180 - (180 * 0.4145) = 180 - 74.61 = 105.39

계산 결과

549m3/105sec ->
5.23m3/sec

 

계산 결과 스킬을 아무것도 찍지 않았을 경우 [ 속도 x 2 + 효율 x 1 ] 리그가 효율이 좋게 나왔습니다.

[ 속도 x 2 + 효율 x 1 ] > [ 속도 x 3 ]

 

 

두 번째, 스킬을 찍었을 경우

Strip Mining 5 + Advanced Strip Mining 1까지 스킬을 찍었다는 가정하에 계산을 해보도록 하겠습니다.

 

계산식

 - 채광 효율 : Base yield * Ship Bonus * (Skill + Rig)

 

스킬

 - Basic Strip Mining 5 : 50%

 - Advane Strip Mining 1 : 10% 

 

장착 장비

 - MK7 Strip Miner : 579m3
 - Miner Efficiency Upgrade I : 20%
 - Miner Circulation Accelerator I : -20%

 

[ 속도 x 2 + 효율 x 1 ]

채광 효율
579 * (1 + 0.5) * (1 + 0.5 + 0.1 + 0.2) = 1,563.3m3

채광 시간 계산

20% + (20% * 0.8 * 0.87) = -33.90%
위 계산식을 참고하여 계산을 해보면 감소되는 채광 시간은 33.90% 입니다.

 

180 - (180 * 0.339) = 180 - 61.02 = 118.98

계산 결과
1,563m3/119sec -> 13.13m3/sec

 

[ 속도 x 3 ]

채광 효율
579 * (1 + 0.5) * (1 + 0.5 + 0.1) = 1389.6m3

채광 시간 계산
((1 - 0.2) * (1 - (0.2 * 0.869)) * (1 - (0.2 * 0.571))) - 1 = (0.8 * 0.8262 * 0.8858) - 1 = 0.5854 - 1 = -0.4145

위 계산식을 참고하여 계산을 해보면 감소되는 채광 시간은 -41.45% 입니다.

 

180 - (180 * 0.4145) = 180 - 74.61 = 105.39

계산 결과
1389.6m3/105sec -> 
13.23m3/sec

 

계산 결과 Strip Mining 5 + Advanced Strip Mining 1 스킬 이상일 경우 [ 속도 x 3 ] 리그가 효율이 좋게 나왔습니다.

[ 속도 x 3 ] > [ 속도 x 2 + 효율 x 1 ]

 

 

계산 결과 정리

Strip Mining 5 + Advanced Strip Mining 1 스킬 미만일 경우 [ 속도 x 2 + 효율 x 1 ] 효율이 좋고

Strip Mining 5 + Advanced Strip Mining 1 스킬 이상일 경우 [ 속도 x 3 ] 효율이 좋습니다.

 

 

* 참고자료

 

How will strip miners work in the game?

I know that in beta they do not target a specific asteroid but rather randomly. I remember watching benzie's video and he stated its probably a...

www.reddit.com

 

오늘은 게이트 캠핑을 당하지 않는 방법에 대하여 공유드리려고 합니다.

내용이 길기 때문에 바쁘신 분들을 위해 두줄 요약을 먼저 작성하였습니다.

 

 

* 두줄 요약

정렬 시간이 2초 미만일 경우 타겟팅이 잡히지 않아 게이트 캠핑에 면역됩니다.

정렬 시간이 1.73초인 함선은 1.99초보다 빠르게 워프에 진입하지 않습니다. (둘 다 실제 워프 시간은 2초)

 

 


 

 

첫 번째, 인스타 워프(Insta-Warp) 이해하기

게이트 캠핑을 피하기 위해선 Insta-Warp를 알고 계셔야 합니다.

 

Insta-Warp는 정렬 시간이 2초 미만인 선박을 의미합니다.

2초 제한은 임의적이지 않으며 EVE 작동 방식과 관련이 있습니다.

 

간단히 말해, 함선이 워프에 들어갈 수 있는지 확인하기 위해 서버는

해당 함선이 모든 상태를 체크하고 있는지 매 초마다 확인합니다.

 

배가 2초 미만으로 정렬되면 두 번째 서버 틱(서버가 확인 중일 때) 전에 모든 워프 전제 조건이 있으므로

서버가 두 번째로 확인하는 경우 배는 정확히 2초 안에 워프 상태에 들어갑니다.

 

이 경우 서버가 워프 할 준비가 된 서버 틱까지 시간을 신경 쓰지 않는다는 점을 이하는 것이 중요합니다.

정렬 시간이 1.73초인 함선은 1.99초보다 빠르게 워프에 진입하지 않습니다.

둘 다 실제 2초의 워프 시간이 있습니다.

 

정렬 시간이 2.01초인 함선은 다음 서버 틱이 워프에 들어갈 때까지 기다려야 하므로 3초 안에 워프에 들어갑니다.

 

인스타 워프는 인스타 락을 포함한 모든 선박은 2초 이내에 타겟팅을 하지 못합니다.

따라서 인스타 워프 선박은 공격의 위험 없이 게이트로 이동할 수 있습니다.

 

 

 

EVE-GUIDES.FR | Insta-lock : Le guide Ultime

Guides website about the MMORPG EVE Online. Including the Ultimate Citadel Guide and the EVE Online Career Tree!

english.eve-guides.fr

 


 

 

두 번째, 정렬 시간 계산하기

정렬 시간은 다음 방정식에서 계산해야 합니다.

 

 

 

정렬 시간 (초)

 

 - 계산식 : ( In(2) * Inertia Modifier(선회력, 가속력) * Mass(질량) ) / 500,000

 - ln(2) = 0.69314718056

 

* 참고자료

 

Equations - EVEDev

Industrial Equations BaseTimes: Number found in invBlueprintTypes table of Data Dump SlotModifier: Bonuses granted by POS labs, Outposts, or standard factory slots SkillLevel: Character's level of indicated skill ME/PE: The ME or PE level of the Blueprint

wiki.eve-id.net

 

계산식을 확인했으니 함선들의 기본 정렬 시간을 확인해봅시다.

(스킬과 아이템의 영향을 받지 않는 함선의 기본 스펙으로 계산하였습니다.)

 

 

 

 첫 번째는 프리깃인 Condor II입니다.

워낙에 빠른 함선이기 때문에 기본 스펙으로 계산 시 1.77초로 게이트 캠핑을 절대로 당할 수가 없겠네요.

 

Condor II

 - Mass : 1,065,0000

 - Inertia Modifier : 1.2

( 0.69314718056 * 1.2 * 1,065,000 ) / 500,000 = 1.77

 

 

두 번째로 Venture III입니다.

기본 스펙으로 계산 시 4.88초로 타겟팅이 된다면 게이트 캠핑을 당할 것 같네요.

하지만 시그니처 반경(Signature Radius)이 낮은 편이기 때문에 스킬과 아이템을 잘 섞으면 게이트 캠핑을 피할 수 있을 것 같습니다.

 

Venture III

 - Mass : 1,600,000

 - Inertia Modifier : 2.2

0.69314718056 * 2.2 * 1,600,000 ) / 500,000 = 4.88 초

 

 

 세 번째로 Caracal Navy Issue입니다.

기본 스펙으로 계산 시 5.03초로 Venture III와 마찬가지로 타겟팅이 된다면 게이트 캠핑을 당할 것 같네요.

시그니처 반경(Signature Radius)이 큰 편이므로 Command 스킬 또는 아이템을 구비하지 않으면 게이트 캠핑에 당할 수 있을 것 같네요.

 

Caracal Navy Issue

 - Mass : 9,600,000

 - Inertia Modifier : 0.38

( 0.69314718056 * 0.38 * 9,600,000 ) / 500,000 = 5.03 초

 

 

 마지막으로 Mammoth입니다.

기본 스펙으로 계산 시 10.84초로 크기도 크지만 함선 자체 정렬 시간이 엄청나게 깁니다.

이런 수송선은 스킬과 아이템을 적절히 세팅하지 않으면 아주 좋은 먹잇감이 될 것입니다.

 

Mammoth

 - Mass : 11,500,000

 - Inertia Modifier : 0.68

( 0.69314718056 * 0.68 * 11,500,000 ) / 500,000 = 10.84 초

 

 


 

 

세 번째, 정렬 시간 줄이기

함선 자체 정렬 시간이 낮다고 해서 포기할 수 없습니다

모듈, 리그, 스킬 등으로 정렬 시간을 줄여줄 수 있습니다.

 

Skill

  Lv 1 Lv 2 Lv 3 Lv 4 Lv 5
Command - 5% - 10% - 15% - 20% - 25%
Advanced Command - 2% - 4% - 6% - 8% - 10%
Expert Command - 2% - 4% - 6% - 8% - 10%

Low Slot

  ㄴ MK3 Inertial Stabilizer : -17.3% (활성화 시 +150%)

  ㄴ ...

  ㄴ Synthetic Hull Inertial Stabilizer : -21.5% (활성화 시 +150%)

Rig

  ㄴ Polycarbon Engine Housing I : -10%

  ㄴ Polycarbon Engine Housing II : -15%

   Polycarbon Engine Housing II : -20%

   Polycarbon Engine Housing II : -25%

 

 

정렬 시간을 감소시켜주는 항목들을 정리해 보았습니다.

 

이제 연구용 Retriever에 스킬과 아이템을 적절히 섞어주었을 경우

얼마나 정렬 속도가 줄어드는지 확인해보겠습니다.

(수송용 배가 없어서..ㅠㅠ Retriever로 테스트를 해보았습니다. 참고해주세요.)

 

 

 Industrial Ship Command Level 5 + Advanced Industrial Ship Command Level 4 스킬이 적용된 Retriever입니다.

질량이 커서 기본 스펙 Mommoth와 정렬 시간과 얼마 차이가 안 나네요.

 

 - Mass : 20,000,000

 - Inertia Modifier : 0.345

( 0.69314718056 *  0.345 * 20,000,000 ) / 500,000 = 9.56 초

 

 

 Low Slot에 Basic Inertial Stabilizer 3개, Rig에 Polycarbon Engine Housing I 3개를 세팅하였습니다.

워낙에 Retriever가 함선이 크고 느려서 저렴한 정렬 세팅 시 5.41 초가 나오게 되네요.

 

 - Mass : 20,000,000

 - Inertia Modifier : 0.195

( 0.69314718056 *  0.195 * 20,000,000 ) / 500,000 = 5.41 초

 

Basic Inertial Stabilizer : -19.7% (활성화 시 +150%)

Polycarbon Engine Housing I : -10%

 

 

 마지막으로 Inertial Stabilizer 3개를 동시에 활성화시켰을 때입니다.

활성화 시 드디어 1.91초로 2초 미만이 되었습니다!

 

 - Mass : 20,000,000

 - Inertia Modifier : 0.068997

( 0.69314718056 *  0.068997 * 20,000,000 ) / 500,000 = 1.91 초




 

 

미자막, 인게임에서 정렬 시간 비교

위 이론상 정렬 시간이 1.77 Condor II와 

정렬 시간이 1.91초인 Retriever(정렬 세팅 + Inertial Stabilizer 활성화)는

워프에 진입하는 시간은 동일하게 2초입니다.

 

Condor II 워프

 

Retriever(정렬 세팅 + Inertial Stabilizer 활성화) 워프

 

위 사진을 보시면 아시겠지만 정렬 시간이 2초 미만일 경우

워프 준비(PREPARE FOR WARP)에서 워프를 바로 진행이 되는 걸 보실 수 있습니다.

 

 

Retriever(정렬 세팅 X) 워프

아무런 세팅이 되어있지 않은 Retriever는 워프 준비(PREPARE FOR WARP)에서

워프를 진행하는데 까지 시간이 많이 소요됩니다.

이때 여러 명에게 타겟팅이 되고 Warp Diruptor를 맞게 된다면 소중한 배를 잃어버릴 겁니다.

 

 

오늘은 Retriever를 가지고 이런저런 테스트를 진행해보았는데요.

스킬 및 아이템들이 완벽하게 준비는 되지 않았지만 나름 의미 있는 실험이었던 것 같습니다.

 

수송선의 경우 2초 미만으로 잘 세팅을 하게 된다면 안전한 비행을 하실 수 있으실 겁니다.

 

 

 

* 참고자료

 

Gate camp counterplay - works AFK

TLDR: fit inertia stabilisers. Most, probably all cruisers in the game can be made uncatchable when off-line. I don't know about BCs and up;...

www.reddit.com

 

How to avoid gate campers when hauling...

This is a video I made to share with you all. First you need to know Invulnerable time when jump through gate. It only happen when you go through...

www.reddit.com

https://youtu.be/X_xcHjLzyJ0

 

Warp Disruptor

말 그대로 맞춘 대상의 워프를 봉쇄해서 도망을 막기 위한 장비

PVP에있어서 가장 기본은 상대를 놓치지 않는것이며, Warp Disruptor를 장착하는 것은 PVP의 첫 걸음이라고 할 수 있다.

 

 

Warp Core Stabilizer

함선의 워프 강도를 올려 Warp Disruptor를 무효화시킬 수 있는 모듈. 줄여서 WCS라고 합니다.

Low Slot에 들어가는 모듈이며 Scan Resolution Adjustment -50% 페널티가 붙어있어 이걸 피팅하고 전투는 힘듭니다.

 

 

Warp Jammer strength

WCS를 피팅한다고 해서 무조건 면역이 되는게 아니고 Warp Jamer strength 감소시켜줄 뿐입니다.

 

예시)

A : 공격 (Warp Disruptor) 

B : 방어 (Warp Core Stabilizer)

 

A : Warp Jammer strength +1  

B : Warp Jammer strength -1 

→ 워프 가능 (Warp Jammer strength : 0)

 

A : Warp Jammer strength +2 

B : Warp Jammer strength -1 

→ 워프 불가 (Warp Jammer strength : +1)

 

A : Warp Jammer strength +1

B : Warp Jammer strength -2 

→ 워프 가능 (Warp Jammer strength : -1)

 

결론적으로 Warp Jammer strength 0보다 클경우에 워프가 불가능합니다.

 

 

 

Warp Core Stabilizer [이브온라인 위키]

 

www.funzinnu.com

 

9월 9일 패치 이후 게이트 캠핑이 엄청나게 늘었습니다.

그런데 신기하게도 킬 리포트를 보면 Venture II가 간혹 있는 걸 보고 궁금증이 생겼습니다.

그래서 오늘은 Venture II를 왜 게이트 캠핑에 사용을 하는지 알아보려고 합니다.

 

(참고) 9월 9일 패치노트

1. 자동 조종 장치를 사용하는 선박에서 워프 중단이 작동하지 않는 문제를 수정했습니다.

 

 

 

 

왜 게이트 캠핑에 Venture II를 사용할까?

게이트 캠핑에서 가장 중요한 것은 빠르게 적을 타겟팅하여 워프를 못하게 막는 것입니다.

Venture III도 있는데 왜 Venture II를 쓰는지에 대해서는 아래 내용을 확인해보면 알 수 있습니다.

 

비교를 위해 제가 주로 사용하는 Venture III의 정보를 캡처해보았습니다.

스캔 정밀도(Scan Resolution)가 낮은편이군요. 이제 Venture II를 보러 가 봅시다.

 

Venture II의 스캔 정밀도(Scan Resolution)의 값이 상당히 높습니다.

 

아주 저렴한 Venture II가 팩션 함선인 Dramiel보다 훨씬 높은 걸 알 수 있습니다.

 

 

스킬 정밀도(Scan Resolution)가 높으면 뭐가 좋을까?

타겟팅 소요 시간은 함선의 스캔 정밀도(Scan Resolution)와 시그니처 반경(Signature Radius)에 영향을 받습니다.

  • 스캔 정밀도가 높을수록 적 함선을 보다 빠르게 타겟팅할 수 있습니다.
  • 시그니처 반경이 클수록 적에게 타깃팅 당하는 속도가 빨라집니다.

대형 함선은 스캔 정밀도가 낮고 시그니처 반경이 크기 때문에 타겟팅 속도가 느리고 적으로부터 타겟팅 당하기 쉽습니다.

반대로 소형 함선은 스캔 정밀도가 높고 시그니쳐 반경이 작습니다.

 

스캔 정밀도를 일정 수준까지 올릴 경우, 시그니처 반경을 무시하고 빠른 타겟팅을 진행할 수 있습니다.

타겟팅 시간이 최대로 감소된 것을 '인스타 락(Insta Lock)'이라 부릅니다.

 

 

타겟팅 시간

타겟팅 소요 시간은 함선의 스캔 정밀도와 시그니처 반경에 영향을 받습니다. 스캔 정밀도는 피팅 창에서 확인하실 수 있습니다. 스캔 정밀도가 높을수록 적 함선을 보다 빠르게 타겟팅할 수 있

support.eveonline.com

 

결론

  • 장점 : 스캔 정밀도가 매우 높기 때문에 다른 선박보다 훨씬 짧은 시간에 타겟팅을 하고 워프를 못하게 막을 수 있음
  • 단점 : 미드 슬롯이 한 개이기 때문에 Warp Disruptor를 한 개만 사용 가능

 

 

마지막으로 피팅..

Venture II로 게이트 캠핑을 직접 해보지 않았기 때문에

유튜브에 있는 영상을 기준으로 피팅을 공유드리고 마치겠습니다.

 

High Slot

MK5 Small Missile Launcher x 2

 

Mid Slot

MK3 Warp Disruptor

MK5 Hornet x 2

 

Low Slot

MK5 100mm Reinforced Steel Plate x 2

MK5 Damage Control

 

 

 

* 참고

www.youtube.com/watch?v=IRZ5wvZrvwQ

 

 

나머지 매개변수 (Rest Parameters)

ES2015에서 도입된 나머지 매개변수(Rest Parameters) 문법을 통해 똑같은 기능을 더 깔끔한 문법으로 구현할 수 있기 때문에, arguments는 더 이상 사용되지 않는 기능이 되었습니다.

function sum(...ns) {
    let result = 0;
    for (let item of ns) {
        result += item;
    }
    return result;
}

sum(1, 2, 3, 4); // 10

위의 예제와 같이, 매개변수 앞에 ...을 붙여주면, 해당 매개변수에 모든 인수가 저장됩니다.
arguments와는 달리 나머지 매개변수는 실제 배열이기 때문에, 배열의 메소드를 활용할 수 있습니다.

function sum(...ns) {
    // `for...of` 루프 대신에 `reduce` 메소드를 사용해서 합계를 구할 수 있습니다.
    return ns.reduce((acc, itme) => acc + item, 0);
}

sum(1, 2, 3, 4); // 10

단, ... 문법은 마지막 매개변수에서만 사용할 수 있습니다.

function printGrades(name, ...grades) {
    console.log(`${name} 학생의 점수는 ${grades.join(', ')} 입니다`);
}

printGrades('Mary', 96, 78, 68); // Mary 학생의 점수는 96, 78, 68 입니다.

아래와 같이 마지막 매개변수가 아닌 매개변수에 ... 문법을 사용하려고 하면 에러가 납니다.

function printGrades(name, ...grades) {
    console.log(`${name} 학생의 점수는 ${grades.join(', ')} 입니다`);
}
// SyntaxError: Rest parameter must be last formal parameter

사실 arguments 객체는 더 많은 기능을 포함하고 있지만,
여기에서 소개하지 않은 기능은 '주인 없는 this'와 함께 예전 버전 JavaScript의 좋지 않은 부분 중 하나이므로 사용하지 않는 것이 좋습니다.
그래서 어떤 기능이 있는지 궁금하시다면 MDN 문서를 참고하세요

 

 

함수 더 알아보기 · JavaScript로 만나는 세상

함수 더 알아보기 객체로서의 함수 이전에도 언급했듯이, 함수는 Function 생성자로부터 생성되는 객체입니다. 다만, 다른 객체들과는 다르게 호출할 수 있다(callable)는 특징이 있습니다. 함수 객��

helloworldjavascript.net

 

'DEV > NodeJS' 카테고리의 다른 글

ES2015 - Symbol  (0) 2020.10.02
ES2015 - 분해대입 (Destructuring Assignment)  (0) 2020.10.02
ES2015 - 화살표 함수 (Arrow Function)  (0) 2020.09.15
ES2015 - 변수 (let, const)  (0) 2020.09.14
Express 모듈 설치 및 서버 실행  (0) 2020.05.13

화살표 함수 (Arrow Function)

함수 정의를 위한 새로운 표기법인 화살표 함수 (Arrow Function)은 ES2015에서 도입이 되었습니다.

// 여기에서 x + y 는 ** 바로 반환됩니다. **
const add = (x, y) => x + y;
// 바로 반환시키지 않고 function 키워드를 통한 함수 정의처럼 여러 구문을 사용하려면 curly barces({...}) 로 둘러싸주어야 합니다,
// ‘=>’ 다음 부분을 중괄호로 둘러싸면, 명시적으로 ‘return’ 하지 않는 한 아무것도 반환되지 않습니다.
const add = (x, y) => {
    const result = x + y;
    return result;
}
// 매개변수가 하나밖에 없다면, 매개변수 부분의 괄호를 쓰지 않아도 무방합니다.
const negate = x => !x;

화살표 함수는 표기법이 간단하기 때문에 익명 함수를 다른 함수의 인수로 넘길 때 주로 사용됩니다.

[1, 2, 3, 4, 5].filter(x => x % 2 === 0);

일반적인 함수와 화살표 함수는 표기법에서만 다른 것이 아니고, 몇 가지 미묘한 차이점이 있습니다.

이에 대해서는 아래에서 자세히 다룹니다.

 

 

 

함수 · JavaScript로 만나는 세상

함수 프로그래밍에서의 함수란, 큰 프로그램을 잘게 쪼개어 특정 코드 뭉치를 반복해서 사용할 수 있도록 묶어놓은 코드 뭉치의 단위를 말합니다. 함수를 어떻게 작성하느냐에 따라서 코드의 ��

helloworldjavascript.net

 


 

 

화살표 함수(Arrow Function) 자세히 알아보기

화살표 함수(Arrow function)는 ES2015에서 도입된 새로운 유형의 함수입니다.

화살표 함수는 (매개변수 목록) => {함수 내용}과 같은 문법을 통해 정의할 수 있습니다.

const add = (x, y) => {
    return x + y;
}

const negate = (x) => {
    return !x;
}

다만, 특정 조건을 만족하는 화살표 함수는 조금 더 간결한 문법으로 정의할 수도 있습니다.

  • 만약 화살표 함수의 매개변수가 하나라면, 괄호를 생략할 수 있습니다.
  • 만약 화살표 함수의 내부가 하나의 구문으로 이루어졌다면, 중괄호를 생략할 수 있습니다. 이 때, 이 구문의 결과값이 곧 함수의 반환값이 됩니다.

이 성질을 이용해 위 코드를 더 짧게 작성할 수 있습니다.

const add = (x, y) => x + y;
const negate = x => !x;

function 구문으로 정의되는 함수와 비교했을 때, 화살표 함수는 문법 측면에서만 다른 것이 아니라 특별한 성질을 갖고 있습니다.

  • 화살표 함수는 생성자로 사용될 수 없습니다. 따라서 prototype 속성을 갖고 있지 않습니다. 그리고 스스로의 new.target을 가지지 않습니다.
  • 화살표 함수는 스스로의 this, arguments, super를 가지지 않습니다.
  • 화살표 함수 내부에서 yield 키워드를 사용할 수 없습니다. 즉, 제너레이터로 사용될 수 없습니다.

여기서 스스로의 this를 가지지 않는다는 말은 함수 내부에서 this를 사용할 수 없다는 말이 아닙니다. 화살표 함수 내부에서 this를 사용하면, 그 this는 함수가 정의된 스코프에 존재하는 this를 가리킵니다. 이는 new.target, arguments, super 모두 마찬가지 입니다.

 

function Person(name) {
    this.name = name;
    this.getName = () => {
        // 여기에서 사용된 `this`는 '함수가 정의된 스코프', 즉 'Person 함수 스코프'에 존재하는 `this`를 가리키게 됩니다.
        return this.name;
    }
}

const mary = new Person('mary');
mary.getName(); // 'mary'

이런 성질 떄문에, 화살표 함수 내부에 있는 this는 엄격 모드의 영향을 받지 않습니다.

 

// 주의!
// 화살표 함수는 생성자로 사용될 수 없지만,
// 함수의 이름을 대문자로 시작하도록 했습니다.
const Person = (name) => {
    this.name = name;
}

Person('mary');
console.log(window.name); // mary

화살표 함수를 통해 this를 다룰 때 주의해야 할 점에 대해서 조금 더 알아보겠습니다.

화살표 함수는 스스로의 this를 갖지 않는다고 했습니다. 이 때문에,
화살표 함수에 대해 bind, call, apply 메소드를 호출해도 아무런 효과가 없습니다.

 

function Person(name) {
    this.name = name;
    this.getName = () => {
        // 여기에서 사용된 `this`는 `함수가 정의된 스코프`,
        // 즉 'Person 함수 스코프'에 존재하는 `this`를 가리키게 됩니다.
        return this.name;
    }
}

const mary = new Person('mary');

// `this`를 바꿔보려고 해도, 아무런 효과가 없습니다.
mary.getName.call({name: 'john'}); // 'mary'

그리고, 화살표 함수 내부에서 this를 사용하면 함수가 정의된 스코프에 있는 this 를 가르킨다고 했습니다.
즉, 화살표 함수 내부의 this화살표 함수가 정의된 문맥에 의해 결정됩니다.
function 구문으로 정의된 함수에 쓰이는 this어떻게 호출되는지에 의해 결정되는 것과는 다른 동작 방식을 보입니다.

 

const mary = {
    name: 'mary',
    getName: () => {
        return this.name;
    }
};

// 위의 화살표 함수는 전역 스코프에서 정의되었기 때문에, `this`는 전역 객체를 가리킵니다.
// `mary`의 메소드로 사용된다고 해도, 이 사실이 변하지 않습니다.
// 브라우저 환경의 전역 객체인 `window`는 `name`이라는 속성에 빈 문자열을 갖고 있기 때문에, 이 값이 대신 반환됩니다.
mary.getName(); // ''

이처럼, 객체의 속성 값에 메소드를 직접 정의할 때에는 화살표 함수를 사용해서는 안됩니다.

그러면 어떨때 화살표 함수를 사용하는게 좋을까요?


화살표 함수의 편리함은 함수를 다른 함수의 인수로 넘겨야 할 때 발휘됩니다.
함수를 받아서 호출하는 쪽에서 어떻게 호출하든, this 때문에 문제가 생길 일이 없습니다.
화살표 함수의 this는 '어떻게 정의되었는지'에 따라 결정되기 때문이죠 !

 

아래 코드를 실행해보시고, getName 메소드를 일반적인 함수 (function () {...)로 바꾸어서 결과가 어떻게 나오는지 관찰해보세요.

 

function Person(name) {
    this.name = name;
    this.getName = () => {
        return this.name;
    }
}

const mary = new Person('mary');

function printResult(func) {
    console.log(func());
}

// 화살표 함수로 정의된 메소드는 다른 함수의 인수로 넘겨도 아무런 문제가 없습니다!
printResult(mary.getName);

 

정리

function 구문으로 생성되는 함수가 단순한 함수 이외에 생성자나 제너레이터 등의 여러 기능까지 떠맡고 있는 반면에,
화살표 함수는 오직 함수 혹은 메소드로 사용되도록 만들어졌습니다.
그리고 어떻게 호출되더라도 this가 변하지 않고 문법이 간결하기 떄문에,
함수를 값으로 다루어야 하는 경우 (특히 함수를 다른 함수의 인수로 넘겨야 하는 경우) 에는 화살표 함수가 일반 함수 보다 편리한 경우가 많습니다.

 

 

 

함수 더 알아보기 · JavaScript로 만나는 세상

함수 더 알아보기 객체로서의 함수 이전에도 언급했듯이, 함수는 Function 생성자로부터 생성되는 객체입니다. 다만, 다른 객체들과는 다르게 호출할 수 있다(callable)는 특징이 있습니다. 함수 객��

helloworldjavascript.net

 

 

'DEV > NodeJS' 카테고리의 다른 글

ES2015 - 분해대입 (Destructuring Assignment)  (0) 2020.10.02
ES2015 - 나머지 매개변수(Rest Parameters)  (0) 2020.09.15
ES2015 - 변수 (let, const)  (0) 2020.09.14
Express 모듈 설치 및 서버 실행  (0) 2020.05.13
npm  (0) 2020.05.12

ES2015에서 도입이된 let과 const에 대해 알아보려고합니다.

let은 변수를 선언할 때 쓰는 키워드, const는 재대입이 불가능한 변수로 선언할 때 쓰는 키워드 입니다.

 

let

let의 사용방법은 다음과 같습니다.

let seven = 7;

 

위에서는 7이라는 값에 seven이라는 이름을 붙이기 위해서 다음과 같이 선언과 동시에 대입을 했습니다.

물론 변수의 선언이 끝난 이후에 대입을 하거나, 이미 값이 대입되어 있는 변수에 다른 값을 대입할 수도 있습니다.

 

let eight;
eight = 8;
let seve = 7;
seven = 77;
seven = 777;

 

const

const로 변수를 선언할 때는 반드시 선언 시에 값을 대입해주어야 합니다.

값 없이 선언만 하게 되면 에러가 발생합니다. 또한 추후에 다른 값을 대입할 수 없습니다.

const notAssigned; // Uncaught SyntaxError: Missing initializer in const declaration
const assigned = 1
assigned = 2; // Uncaught TypeError: Assignment to constant variable.


let과 const 모두 함꺼번에 여러 개의 변수를 선언하는 문법을 지원합니다.

 

let one = 1, two = 2, nothing;
const three = 3, four = 4;


let과 const로 선언한 이름은 다시 선언될 수 없습니다.

let seven = 7;
let seven = 77; // Uncaught SyntaxError: Identifier ‘seven’ has already been declared


let과 const 중 무엇을 쓸 것인가?
항상 let 보다 const를 사용하는 것이 좋습니다.
let을 사용하면 의도치 않게 다른 값이 대입되어 버리는 일이 생길 수 있기 때문입니다.
정말로 재대입이 필요한 경우에만 let을 사용하는 것이 좋은 습관입니다.


 

 

값 다루기 · JavaScript로 만나는 세상

No results matching ""

helloworldjavascript.net

'DEV > NodeJS' 카테고리의 다른 글

ES2015 - 나머지 매개변수(Rest Parameters)  (0) 2020.09.15
ES2015 - 화살표 함수 (Arrow Function)  (0) 2020.09.15
Express 모듈 설치 및 서버 실행  (0) 2020.05.13
npm  (0) 2020.05.12
NodeJS  (0) 2020.05.12

+ Recent posts