반응형
반응형

nullish 병합 연산자

nullish 병합 연산자(nullish coalescing operator)

 

https://ko.javascript.info/nullish-coalescing-operator#ref-778

 

nullish 병합 연산자 '??'

 

ko.javascript.info

 

nullish 병합 연산자(nullish coalescing operator) ??를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 ‘확정되어있는’ 변수를 찾을 수 있습니다.

a ?? b의 평가 결과는 다음과 같습니다.

  • a가 null도 아니고 undefined도 아니면 a
  • 그 외의 경우는 b

nullish 병합 연산자 ??없이 x = a ?? b와 동일한 동작을 하는 코드를 작성하면 다음과 같습니다.

x = (a !== null && a !== undefined) ? a : b;

비교 연산자와 논리 연산자만으로 nullish 병합 연산자와 같은 기능을 하는 코드를 작성하니 코드 길이가 길어지네요.

또 다른 예시를 살펴봅시다. firstName, lastName, nickName이란 변수에 사용자 이름이나 별명을 저장하는데, 사용자가 아무런 정보도 입력하지 않는 케이스도 허용한다고 해보겠습니다.

화면엔 세 변수 중 실제 값이 있는 변수의 값을 출력하는데, 세 변수 모두 값이 없다면 '익명의 사용자’가 출력되도록 해보죠.

이럴 때 nullish 병합 연산자 ??를 사용하면 값이 정해진 변수를 간편하게 찾아낼 수 있습니다.

 
 
let firstName = null;
let lastName = null;
let nickName = "바이올렛";

// null이나 undefined가 아닌 첫 번째 피연산자
alert(firstName ?? lastName ?? nickName ?? "익명의 사용자"); // 바이올렛

'??'와 '||'의 차이

nullish 병합 연산자는 OR 연산자 ||와 상당히 유사해 보입니다. 실제로 위 예시에서 ??를 ||로 바꿔도 그 결과는 동일하기까지 하죠. 관련 내용은 이전 챕터에서 살펴본 바 있습니다.

그런데 두 연산자 사이에는 중요한 차이점이 있습니다.

  • ||는 첫 번째 truthy 값을 반환합니다.
  • ??는 첫 번째 정의된(defined) 값을 반환합니다.

null과 undefined, 숫자 0을 구분 지어 다뤄야 할 때 이 차이점은 매우 중요한 역할을 합니다.

예시를 살펴봅시다.

height = height ?? 100;

height에 값이 정의되지 않은경우 height엔 100이 할당됩니다.

이제 ??와 ||을 비교해봅시다.

 
 
let height = 0;

alert(height || 100); // 100
alert(height ?? 100); // 0

height || 100은 height에 0을 할당했지만 0을 falsy 한 값으로 취급했기 때문에 null이나 undefined를 할당한 것과 동일하게 처리합니다. 따라서 height || 100의 평가 결과는 100입니다.

반면 height ?? 100의 평가 결과는 height가 정확하게 null이나 undefined일 경우에만 100이 됩니다. 예시에선 height에 0이라는 값을 할당했기 때문에 얼럿창엔 0이 출력됩니다.

이런 특징 때문에 높이처럼 0이 할당될 수 있는 변수를 사용해 기능을 개발할 땐 ||보다 ??가 적합합니다.

연산자 우선순위

??의 연산자 우선순위 5로 꽤 낮습니다.

따라서 ??는 =와 ? 보다는 먼저, 대부분의 연산자보다는 나중에 평가됩니다.

그렇기 때문에 복잡한 표현식 안에서 ??를 사용해 값을 하나 선택할 땐 괄호를 추가하는 게 좋습니다.

 
 
let height = null;
let width = null;

// 괄호를 추가!
let area = (height ?? 100) * (width ?? 50);

alert(area); // 5000

그렇지 않으면 *가 ??보다 우선순위가 높기 때문에 *가 먼저 실행됩니다.

결국엔 아래 예시처럼 동작하겠죠.

// 원치 않는 결과
let area = height ?? (100 * width) ?? 50;

??엔 자바스크립트 언어에서 규정한 또 다른 제약사항이 있습니다.

안정성 관련 이슈 때문에 ??는 &&나 ||와 함께 사용하지 못합니다.

아래 예시를 실행하면 문법 에러가 발생합니다.

 
 
let x = 1 && 2 ?? 3; // SyntaxError: Unexpected token '??'

이 제약에 대해선 아직 논쟁이 많긴 하지만 사람들이 ||를 ??로 바꾸기 시작하면서 만드는 실수를 방지하고자 명세서에 제약이 추가된 상황입니다.

제약을 피하려면 괄호를 사용해주세요.

 
 
let x = (1 && 2) ?? 3; // 제대로 동작합니다.

alert(x); // 2

요약

  • nullish 병합 연산자 ??를 사용하면 피연산자 중 ‘값이 할당된’ 변수를 빠르게 찾을 수 있습니다.
    // height가 null이나 undefined인 경우, 100을 할당
    height = height ?? 100;
  • ??는 변수에 기본값을 할당하는 용도로 사용할 수 있습니다.
  • ??의 연산자 우선순위는 대다수의 연산자보다 낮고 ?와 = 보다는 높습니다.
  • 괄호 없이 ??를 ||나 &&와 함께 사용하는 것은 금지되어있습니다.
반응형
반응형

일본 여행시 캡슐토이 마켓

https://bandainamco-am.co.jp/en/others/capsule-toy-store/store/?pageNo=0&areaType=pref&areaNo=6&prefNo=27&newsUrl=&product_code= 

 

Store Information | Gashapon Department Store | Other Facilities | BANDAI NAMCO Amusement "Dreams, Fun and Impression"

Gashapon Department Store is a store specializing in capsule toys that will enrich your gashapon activities. It is a store where you can enjoy a new shopping experience like never before, with an overwhelming selection of popular capsule toys, making your

bandainamco-am.co.jp

 

Gashapon Department Store Canal City Hakata

Canal City Hakata South Building B1, 1-2-74 Sumiyoshi, Hakata-ku, Fukuoka City, Fukuoka Prefecture
Business hours: 10:00-21:00

いきもの大図鑑 かぶとむし04

https://bandainamco-am.co.jp/en/others/capsule-toy-store/item/item_details.html?product_code=4549660777878

 

Gashapon Department Store Namba Parks

Namba Parks 6F, 2-10-70 Nambanaka, Naniwa-ku, Osaka-shi, Osaka
Business hours: 11:00-22:00

 

반응형
반응형

행복은 얼마나 많은 것을 소유하고 누리며 사느냐에 있는 게 아니라,
작은 것이라도 서로 나누며 사랑하는 마음에 있다.
우리는 상대가 행복해하면 나도 행복해진다는 단순한 진리를 잘 알지 못한다.
성공해서 그 부를 이웃에게 베풀면서 살겠다는 믿음을
인생의 목적으로 삼는 순간, 성공할 수 있을 것이다.
그것이 바로 목적의 힘이다.
- 호아킴 데 포사다, ‘난쟁이 피터’에서


이어지는 내용입니다.
“남들이 행복해 지도록 돕는 건 그를 사랑한다는 뜻과 같은 뜻이지요.
이것이 궁극적인 행복이랍니다.
사랑하는 사람이 이루고자 하는 목표를 가지고 있다면,
그가 그걸 이룰 수 있도록 도와줘야만 해요.
인류의 수많은 현자가 찾아 헤매고 발견해낸 행복의 지름길이 바로 여기에 있어요.”

반응형
반응형

자기 삶의 철학이 분명한 사람,
자신이 걸어가는 혹은 걸어야 할 길을
제대로 아는 사람은 절대 서두르지 않는다.
삶의 목적을 알고 있어서다. 이 얼마나 근사한
사실인가. 또한 가족이나 이름, 직업 등
자신에게 주어진 모든 삶의 무게를
완벽하게 감당하고 살아간다.


- 김종원의 《오십에 시작하는 마음 공부》 중에서 -


* 삶에는 속도도 중요합니다.
하지만 속도보다 더 중요한 것이 방향입니다.
삶의 방향, 삶의 목적이 분명한 사람이라면
굳이 서두를 필요가 없습니다. 첫걸음부터
이미 절반을 이룬 셈이니까요. 어깨의
짐이 무거워도 첫 마음을 잃지 않고
꾸준히 걸어가면 됩니다.

반응형

'아침편지' 카테고리의 다른 글

파도치는 삶이 아름답다  (0) 2023.10.13
여기는 어디인가?  (0) 2023.10.12
쾌감 호르몬  (0) 2023.10.10
폭포 같은 남자  (0) 2023.10.09
늦사랑  (0) 2023.10.09
반응형

머스크 전기에 등장하는, 그의 ‘알고리즘’ 몇 가지를 소개해 드리려고 합니다. 다 쓰면 출판사에서 싫어할 것 같아서(물론 이 글은 광고가 아닙니다민!) 몇 개만 추려 볼게요. 

머스크의 알고리즘

모든 요구사항에 의문을 제기한다
부품이든 프로세스든 가능한 한 최대한 제거하라
단순화하고 최적화하라


머스크가 게임에서 배운 인생의 법칙

공감은 자산이 아니다
인생을 게임처럼 플레이하라
패배를 두려워하지 마라
상황을 주도하라

반응형
반응형

'지하철 하차 후 재승차' 10분→15분으로 연장, 추가노선은?

https://mediahub.seoul.go.kr/archives/2009169

 

'지하철 하차 후 재승차' 10분→15분으로 연장, 추가노선은?

서울시대표소통포털 - 내 손안에 서울

mediahub.seoul.go.kr

10월 7일부터 지하철 하차 태그 후 동일역에 15분 내 재승차시 환승이 1회 적용된다.
서울시는 지난 7월 1일부터 시범운영 중인 ‘지하철 하차 후 재승차 제도’를 10월 7일부로 확대·정식 도입한다.

10월 7일부터 재승차 적용시간은 기존 10분에서 15분으로 늘어나고, 적용구간도 기본 노선뿐 아니라 우이신설선, 신림선이 새롭게 추가된다.

‘지하철 재승차 제도’는 지하철 하차 태그 후 기준시간 내 동일역으로 재승차하면 기본운임이 차감되는 대신 환승이 1회 적용되는 제도로 ‘서울시 창의행정 1호’ 사례로 선정되어 도입되었다. 서울시는 시민들의 높은 만족도를 고려하여 제도 개선 및 확대도입을 추진하게 되었다.

서울시는 시민참여 온라인 플랫폼 ‘상상대로 서울’의 공론장 ‘서울시가 묻습니다’를 통해 지난 7월 26일~8월 8일 14일간 시민의견을 청취한 결과, 2,643명의 시민이 참여해 만족도 90%(매우 만족 65.6%), 제도 이용 희망률 97.5%로 답변했다.

또한 588명의 시민들이 제도개선 아이디어를 제출하였으며, 그 중 464명(79%)의 시민들이 적용시간 확대를 요청하였다. 464명 중 5분 추가 연장이 필요하다는 의견이 141명(30%)으로 가장 많았고, 그 다음으로 10분 연장 필요 109명(23.5%), 20분 연장 필요 57명(12%) 순으로 조사됐다.

시는 적용시간 확대를 요청하는 시민 의견, 교통약자 이동시간 및 안전사고 위험성 등을 종합적으로 고려하여 재승차 적용시간을 기존 10분에서 15분으로 확대 적용한다.

‘지하철 하차 후 재승차’ 호선별 적용구간

○ 1호선 : (지하)서울역~(지하)청량리역
○ 3호선 : 지축역~오금역
○ 4호선 : 진접역~남태령역
○ 6호선 : 응암역~봉화산역
○ 7호선 : 장암역~온수역
○ 2, 5, 8, 9호선, 우이신설선, 신림선 : 전 구간
또한 기존 1~8호선(서울교통공사 운영구간) 및 9호선 구간에만 적용됨으로 인하여 발생했던 시민 불편을 줄이고 시민혜택을 확대하기 위하여 서울시 관할 민자 경전철인 우이신설선 및 신림선에도 ‘15분 재승차’ 제도를 전면 도입한다.

시는 이번 확대 도입으로 인하여 연간 약 1,500만명의 시민들이 ‘15분 재승차’ 제도 혜택을 보게 될 것으로 전망했다.

한편 서울시는 본 제도가 수도권 전체 노선으로 확대 적용되어 시민 불편이 최소화될 수 있도록 경기·인천·코레일과 논의 중에 있으며, 해당 기관들과 기관별 구체적인 도입 구간 및 시기 등에 대하여 지속적으로 협의해 나갈 계획이다.

윤종장 서울시 도시교통실장은 "서울시 창의행정 1호로 선정된 지하철 재승차 제도에 대한 시민분들의 높은 관심과 지지에 보답하기 위하여 다양한 시민의견, 현장 여건, 시민안전 등을 고려하여 적용시간 및 구간을 확대하게 되었다"며 "서울시는 앞으로도 시민들이 더 편리하게 지하철을 이용할 수 있도록 서비스를 선도적으로 개선해 나가고, 우리나라 대중교통의 대표 주자인 서울 지하철이 더욱 발전해 나갈 수 있도록 노력하겠다"고 밝혔다.

문의 : 서울교통공사 1577-1234 , 9호선 02-2656-0009 , 우이신설선 02-3499-5561 , 신림선 02-890-2227
10월 7일부터 지하철에서 하차 후 재승차(동일호선 동일역)하는 경우 환승이 적용된다.

 

반응형

+ Recent posts