CINXE.COM

<!DOCTYPE html><html lang="ko" data-theme-enabled="1"><head><script>window.currentUser = null;</script><script>window.shopCurrency = "EUR";</script><script>window.localCurrency = "KRW";</script><script>window.countryCode = "kr";</script><script>window.rateShopTo = {"KRW":1599.5752030827366,"EUR":1,"USD":1.095967278800924,"AMD":428.4594382510116};</script><title itemprop="name">BigInt</title><link href="/pack/styles.100020a0bc7cf13be729.css" rel="stylesheet"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes, minimum-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><!-- chrome autotranslate is enabled only for "en" main version--><meta name="google" content="notranslate"><script>if (window.devicePixelRatio > 1) document.cookie = 'pixelRatio=' + window.devicePixelRatio + ';path=/;expires=Tue, 19 Jan 2038 03:14:07 GMT';</script><link href="//fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic" rel="stylesheet"><link rel="apple-touch-icon-precomposed" href="/img/favicon/apple-touch-icon-precomposed.png"><link rel="canonical" href="https://ko.javascript.info/bigint"><meta name="msapplication-TileColor" content="#222A2C"><meta name="msapplication-TileImage" content="/img/favicon/tileicon.png"><link rel="icon" href="/img/favicon/favicon.png"><meta itemprop="image" content="https://ko.javascript.info/img/site_preview_en_512x512.png"><meta property="og:title" content="BigInt"><meta property="og:image" content="https://ko.javascript.info/img/site_preview_en_1200x630.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="fb:admins" content="100001562528165"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="BigInt"><meta name="twitter:site" content="@iliakan"><meta name="twitter:creator" content="@iliakan"><meta name="twitter:image" content="https://ko.javascript.info/img/site_preview_en_512x512.png"><meta name="google-adsense-account" content="ca-pub-6204518652652613"><link rel="prev" href="/reference-type"><link rel="next" href="/ui"><script data-collect-dnt="true" async src="https://scripts.simpleanalyticscdn.com/latest.js"></script><script>window.GA_ID = "UA-2056213-15";</script><script>window.YANDEX_METRIKA_ID = 32184394;</script><script>{function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-2LWB61WGYJ")}</script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-2LWB61WGYJ"></script><script>window.metrika={reachGoal:function(){}},window.yandex_metrika_callbacks=[function(){try{window.metrika=new Ya.Metrika({id:YANDEX_METRIKA_ID,webvisor:!0,clickmap:!0,params:{user:window.currentUser&&window.currentUser.id}}),metrika.trackLinks({delay:150}),window.addEventListener("error",function(r){window.metrika.reachGoal("JSERROR",{src:(r.filename||r.errorUrl)+": "+(r.lineno||r.errorLine),stack:r.stack||r.error&&r.error.stack,message:r.message})})}catch(r){}}];</script><script src="//mc.yandex.ru/metrika/watch.js" async></script><script>window.RECAPTCHA_ID = "6LfmLAEVAAAAAJMykMnf7aY8nkyTRmYi2ynx51R1";</script><script src="/pack/init.70609fbf02fb44facf1c.js"></script><script src="/pack/head.bb4da882f2485e945fa9.js" defer></script><meta property="og:title" content="BigInt"><meta property="og:type" content="article"><script src="/pack/tutorial.374a28a1cb36d9aabd00.js" defer></script><script src="/pack/footer.0f0ee5206f3453451aa8.js" defer></script></head><body class="no-icons"><script>window.fontTest();</script><div class="page-wrapper page-wrapper_sidebar_on"><!--[if IE]><div style="color:red;text-align:center">Internet Explorer 미만의 브라우저는 지원하지 않습니다. 최신 버전 브라우저를 사용해주세요.</div><![endif]--><div class="sitetoolbar sitetoolbar_tutorial"><script>window.langs = [{"code":"ar","name":"Arabic"},{"code":"az","name":"Azerbaijani"},{"code":"bg","name":"Bulgarian"},{"code":"bn","name":"Bengali"},{"code":"bs","name":"Bosnian"},{"code":"ca","name":"Catalan"},{"code":"cs","name":"Czech"},{"code":"da","name":"Danish"},{"code":"de","name":"German"},{"code":"el","name":"Greek"},{"code":"en","name":"English"},{"code":"es","name":"Spanish"},{"code":"fa","name":"Persian (Farsi)"},{"code":"fi","name":"Finnish"},{"code":"fr","name":"French"},{"code":"he","name":"Hebrew"},{"code":"hi","name":"Hindi"},{"code":"hr","name":"Croatian"},{"code":"hu","name":"Hungarian"},{"code":"hy","name":"Armenian"},{"code":"id","name":"Indonesian"},{"code":"it","name":"Italian"},{"code":"ja","name":"Japanese"},{"code":"ka","name":"Georgian"},{"code":"kk","name":"Kazakh"},{"code":"km","name":"Central Khmer"},{"code":"ko","name":"Korean"},{"code":"ku","name":"Kurdish"},{"code":"ky","name":"Kyrgyz"},{"code":"lt","name":"Lithuanian"},{"code":"me","name":"Montenegrin"},{"code":"ml","name":"Malayalam"},{"code":"ms","name":"Malay"},{"code":"my","name":"Burmese"},{"code":"nl","name":"Dutch"},{"code":"no","name":"Norvegian"},{"code":"pa","name":"Punjabi"},{"code":"pl","name":"Polish"},{"code":"pt","name":"Portuguese"},{"code":"ro","name":"Romanian"},{"code":"ru","name":"Russian"},{"code":"si","name":"Sinhala"},{"code":"sk","name":"Slovak"},{"code":"sl","name":"Slovenian"},{"code":"sq","name":"Albanian"},{"code":"sr","name":"Serbian"},{"code":"ta","name":"Tamil"},{"code":"te","name":"Telugu"},{"code":"test","name":"Test"},{"code":"th","name":"Thai"},{"code":"tk","name":"Turkmen"},{"code":"tr","name":"Turkish"},{"code":"ug","name":"Uyghur"},{"code":"uk","name":"Ukrainian"},{"code":"ur","name":"Urdu"},{"code":"uz","name":"Uzbek"},{"code":"v2","name":"v2"},{"code":"vi","name":"Vietnamese"},{"code":"zh-hant","name":"Chinese Traditional"},{"code":"zh","name":"Chinese"}];</script><script>window.lang = "ko";</script><div class="sitetoolbar__content"><div class="sitetoolbar__lang-switcher"><button class="sitetoolbar__dropdown-button" data-dropdown-toggler>KO</button><div class="sitetoolbar__dropdown-wrap"><div class="sitetoolbar__dropdown-body"><div class="sitetoolbar__lang-switcher-body"><div class="supported-langs supported-langs_toolbar"><div class="supported-langs__container"><ul class="supported-langs__list" style="height:200px"><li class="supported-langs__item"><a class="supported-langs__link" href="https://ar.javascript.info/bigint"><span class="supported-langs__brief">AR</span><span class="supported-langs__title">عربي</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://javascript.info/bigint"><span class="supported-langs__brief">EN</span><span class="supported-langs__title">English</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://es.javascript.info/bigint"><span class="supported-langs__brief">ES</span><span class="supported-langs__title">Español</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://fa.javascript.info/bigint"><span class="supported-langs__brief">FA</span><span class="supported-langs__title">فارسی</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://fr.javascript.info/bigint"><span class="supported-langs__brief">FR</span><span class="supported-langs__title">Français</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://id.javascript.info/"><span class="supported-langs__brief">ID</span><span class="supported-langs__title">Indonesia</span></a></li></ul><ul class="supported-langs__list" style="height:200px"><li class="supported-langs__item"><a class="supported-langs__link" href="https://it.javascript.info/bigint"><span class="supported-langs__brief">IT</span><span class="supported-langs__title">Italiano</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://ja.javascript.info/bigint"><span class="supported-langs__brief">JA</span><span class="supported-langs__title">日本語</span></a></li><li class="supported-langs__item supported-langs__item_current"><a class="supported-langs__link" href="https://ko.javascript.info/bigint"><span class="supported-langs__brief">KO</span><span class="supported-langs__title">한국어</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://learn.javascript.ru/bigint"><span class="supported-langs__brief">RU</span><span class="supported-langs__title">Русский</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://tr.javascript.info/"><span class="supported-langs__brief">TR</span><span class="supported-langs__title">Türkçe</span></a></li><li class="supported-langs__item"><a class="supported-langs__link" href="https://uk.javascript.info/bigint"><span class="supported-langs__brief">UK</span><span class="supported-langs__title">Українська</span></a></li></ul><ul class="supported-langs__list" style="height:20px"><li class="supported-langs__item"><a class="supported-langs__link" href="https://zh.javascript.info/bigint"><span class="supported-langs__brief">ZH</span><span class="supported-langs__title">简体中文</span></a></li></ul></div><div class="supported-langs__text">본 튜토리얼은 전 세계 사람들이 이용할 수 있는 오픈 소스 프로젝트입니다. <a href="https://github.com/javascript-tutorial/ko.javascript.info" rel="noopener noreferrer" target="_blank">프로젝트 페이지에 방문</a>하셔서 번역을 도와주세요.</div></div></div></div></div></div><div class="sitetoolbar__logo-wrap"><a class="sitetoolbar__link sitetoolbar__link_logo" href="/"><img class="sitetoolbar__logo sitetoolbar__logo_normal" src="/img/sitetoolbar__logo_en.svg" width="200" alt="" role="presentation"/><img class="sitetoolbar__logo sitetoolbar__logo_normal sitetoolbar__logo_dark" src="/img/sitetoolbar__logo_en-white.svg" width="200" alt="" role="presentation"/><img class="sitetoolbar__logo sitetoolbar__logo_small" src="/img/sitetoolbar__logo_small_en.svg" width="70" alt="" role="presentation"/><img class="sitetoolbar__logo sitetoolbar__logo_small sitetoolbar__logo_dark" src="/img/sitetoolbar__logo_small_en-white.svg" width="70" alt="" role="presentation"/><script>Array.prototype.forEach.call(document.querySelectorAll("img.sitetoolbar__logo"),function(e){let t=document.createElement("object");t.type="image/svg+xml",t.className=e.className,t.style.cssText="left:0;top:0;position:absolute",t.onload=function(){t.onload=null,e.style.visibility="hidden"},t.data=e.src,e.parentNode.insertBefore(t,e)});</script></a></div><div class="sitetoolbar__nav-toggle-wrap"><button class="sitetoolbar__nav-toggle" type="button"></button></div><nav class="sitetoolbar__sections"><ul class="sitetoolbar__sections-list"></ul></nav><div class="sitetoolbar__right-button-wrap"><a class="sitetoolbar-right-button sitetoolbar-right-button_courses" href="/ebook"><span class="sitetoolbar-right-button__extra-text">구매</span>EPUB/PDF</a></div><div class="sitetoolbar__theme-switcher"><div class="theme-changer"><label class="theme-changer__label" for="theme-changer-input" data-tooltip="Change theme"><input class="theme-changer__input" type="checkbox" id="theme-changer-input" data-theme-changer="data-theme-changer"/><span class="theme-changer__icon theme-changer__icon_light-theme"></span><span class="theme-changer__icon theme-changer__icon_dark-theme"></span></label></div></div><div class="sitetoolbar__search-wrap"><div class="sitetoolbar__search-content"><button class="sitetoolbar__search-toggle" type="button"></button><form class="sitetoolbar__search" method="GET" action="/search"><div class="sitetoolbar__search-input"><div class="text-input"><input class="text-input__control" name="query" placeholder="javascript.info에서 검색하기" required="required" type="text"/></div><button class="sitetoolbar__find" type="submit">검색</button></div></form></div></div></div><div class="tablet-menu"><div class="tablet-menu__line"><div class="tablet-menu__content"><form class="tablet-menu-search" action="/search/"><input class="tablet-menu-search__input" type="search" name="query" placeholder="튜토리얼 내에서 검색" required="required"/><button class="tablet-menu-search__button" type="submit" name="type" value="articles">검색</button></form></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><a class="map" href="/tutorial/map" data-action="tutorial-map"><span class="map__text">튜토리얼 지도</span></a></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><div class="theme-changer theme-changer_tablet-menu theme-changer_has-label"><label class="theme-changer__label" for="theme-changer-input-tablet" data-tooltip="Change theme"><input class="theme-changer__input" type="checkbox" id="theme-changer-input-tablet" data-theme-changer="data-theme-changer"/><span class="theme-changer__icon theme-changer__icon_light-theme"></span><span class="theme-changer__icon theme-changer__icon_dark-theme"></span><span class="theme-changer__label-text theme-changer__label-text_light-theme">Light theme</span><span class="theme-changer__label-text theme-changer__label-text_dark-theme">Dark theme</span></label></div></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><div class="share-icons"><span class="share-icons__title">공유</span><a class="share share_tw" href="https://twitter.com/share?url=https%3A%2F%2Fko.javascript.info%2Fbigint" rel="nofollow"></a><a class="share share_fb" href="https://www.facebook.com/sharer/sharer.php?s=100&amp;p%5Burl%5D=https%3A%2F%2Fko.javascript.info%2Fbigint" rel="nofollow"></a></div></div></div><div class="tablet-menu__line"><div class="tablet-menu__content"><select class="tablet-menu__nav input-select input-select input-select_small" onchange="if(this.value) window.location.href=this.value"><option value="https://ar.javascript.info/bigint">عربي</option><option value="https://javascript.info/bigint">English</option><option value="https://es.javascript.info/bigint">Español</option><option value="https://fa.javascript.info/bigint">فارسی</option><option value="https://fr.javascript.info/bigint">Français</option><option value="https://id.javascript.info/">Indonesia</option><option value="https://it.javascript.info/bigint">Italiano</option><option value="https://ja.javascript.info/bigint">日本語</option><option value="https://ko.javascript.info/bigint" selected>한국어</option><option value="https://learn.javascript.ru/bigint">Русский</option><option value="https://tr.javascript.info/">Türkçe</option><option value="https://uk.javascript.info/bigint">Українська</option><option value="https://zh.javascript.info/bigint">简体中文</option></select></div></div></div><progress class="tutorial-progress" data-sticky value="92" max="92" data-tooltip="92개의 주제 중 92번째 주제"></progress></div><div class="page page_sidebar_on page_inner_padding"><script>if(localStorage.noSidebar){document.querySelector(".page").classList.remove("page_sidebar_on");let e=document.querySelector(".page-wrapper");e&&e.classList.remove("page-wrapper_sidebar_on")}setTimeout(function(){document.querySelector(".page").classList.add("page_sidebar-animation-on")});</script><div class="page__inner"><main class="main main_width-limit"><header class="main__header"><div class="main__header-inner"><div class="main__header-group"><ol class="breadcrumbs"><li class="breadcrumbs__item breadcrumbs__item_home"><a class="breadcrumbs__link" href="/"><span class="breadcrumbs__hidden-text">튜토리얼</span></a></li><li class="breadcrumbs__item" id="breadcrumb-1"><a class="breadcrumbs__link" href="/js"><span>코어 자바스크립트</span></a></li><li class="breadcrumbs__item" id="breadcrumb-2"><a class="breadcrumbs__link" href="/js-misc"><span>기타</span></a></li><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"튜토리얼","item":"https://ko.javascript.info/"},{"@type":"ListItem","position":2,"name":"코어 자바스크립트","item":"https://ko.javascript.info/js"},{"@type":"ListItem","position":3,"name":"기타","item":"https://ko.javascript.info/js-misc"}]}</script></ol><div class="updated-at" data-tooltip="최종 업데이트 2020년 8월 22일"><div class="updated-at__content">2020년 8월 22일</div></div></div><h1 class="main__header-title">BigInt</h1></div></header><div class="content"><article class="formatted" itemscope itemtype="http://schema.org/TechArticle"><meta itemprop="name" content="BigInt"><div itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="email" content="iliakan@gmail.com"><meta itemprop="name" content="Ilya Kantor"></div><div itemprop="articleBody"><div class="important important_warn"> <div class="important__header"><span class="important__type">최근에 추가됨</span></div> <div class="important__content"> 스펙에 추가된 지 얼마 안 된 문법입니다. <a href="https://caniuse.com/#feat=bigint">https://caniuse.com/#feat=bigint</a>에서 브라우저별 지원 여부를 확인할 수 있습니다. </div></div> <p><code>BigInt</code>는 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형입니다.</p> <p>정수 리터럴 끝에 <code>n</code>을 붙이거나 함수 <code>BigInt</code>를 호출하면 문자열이나 숫자를 가지고 <code>BigInt</code> 타입의 값을 만들 수 있습니다.</p> <div id="k0paz5whmh" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>const bigint = 1234567890123456789012345678901234567890n; const sameBigint = BigInt(&quot;1234567890123456789012345678901234567890&quot;); const bigintFromNumber = BigInt(10); // 10n과 동일합니다.</code></pre> </div> </div> </div><h2><a class="main__anchor" name="ref-235" href="#ref-235">수학 연산자</a></h2><p><code>BigInt</code>는 대개 일반 숫자와 큰 차이 없이 사용할 수 있습니다.</p> <div id="70a960y3jf" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>alert(1n + 2n); // 3 alert(5n / 2n); // 2</code></pre> </div> </div> </div><p>위 예시에서 나눗셈 연산 <code>5/2</code>의 결과엔 소수부가 없다는 점에 주의하시기 바랍니다. <code>BigInt</code>형 값을 대상으로 한 연산은 <code>BigInt</code>형 값을 반환합니다.</p> <p><code>BigInt</code>형 값과 일반 숫자를 섞어서 사용할 순 없습니다.</p> <div id="dpn3qrszns" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>alert(1n + 2); // Error: Cannot mix BigInt and other types</code></pre> </div> </div> </div><p>일반 숫자와 섞어서 써야 하는 상황이라면 <code>BigInt()</code>나 <code>Number()</code>를 사용해 명시적으로 형 변환을 해주면 됩니다.</p> <div id="t3u5s0kmg2" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>let bigint = 1n; let number = 2; // 숫자를 bigint로 alert(bigint + BigInt(number)); // 3 // bigint를 숫자로 alert(Number(bigint) + number); // 3</code></pre> </div> </div> </div><p>형 변환과 관련된 연산은 항상 조용히 동작합니다. 절대 에러를 발생시키지 않죠. 그런데 bigint가 너무 커서 숫자형에서 허용하는 자릿수를 넘으면 나머지 비트는 자동으로 잘려 나갑니다. 이런 점을 염두하고 형 변환을 해야 합니다.</p> <div class="important important_smart"> <div class="important__header"><span class="important__type">단항 덧셈 연산자는 bigint에 사용할 수 없습니다.</span></div> <div class="important__content"><p>단항 덧셈 연산자 <code>+value</code>를 사용하면 <code>value</code>를 손쉽게 숫자형으로 바꿀 수 있습니다.</p> <p>그런데 혼란을 방지하기 위해 bigint를 대상으로 하는 연산에선 단항 덧셈 연산자를 지원하지 않습니다.</p> <div id="ar552p617j" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>let bigint = 1n; alert( +bigint ); // 에러</code></pre> </div> </div> </div><p>bigint를 숫자형으로 바꿀 때는 <code>Number()</code>를 사용해야 합니다.</p> </div></div> <h2><a class="main__anchor" name="ref-236" href="#ref-236">비교 연산자</a></h2><p>비교 연산자 <code>&lt;</code>, <code>&gt;</code>는 bigint와 일반 숫자 모두에 사용할 수 있습니다.</p> <div id="97a5liefd9" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>alert( 2n &gt; 1n ); // true alert( 2n &gt; 1 ); // true</code></pre> </div> </div> </div><p>그런데 비교하려는 대상이 다른 타입에 속하면 <code>==</code>를 사용할 때는 같을지 모르지만 <code>===</code>를 사용할 때는 다르다고 판단됩니다.</p> <div id="guijgf5gan" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>alert( 1 == 1n ); // true alert( 1 === 1n ); // false</code></pre> </div> </div> </div><h2><a class="main__anchor" name="ref-237" href="#ref-237">논리 연산</a></h2><p>bigint는 <code>if</code> 안이나 다른 논리 연산자와 함께 사용할 때 일반 숫자와 동일하게 행동합니다.</p> <p><code>if</code>안에서 <code>0n</code>은 falsy이고 다른 값들은 truthy로 평가되죠.</p> <div id="7g3i350z0g" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>if (0n) { // 절대 실행되지 않습니다. }</code></pre> </div> </div> </div><p><code>||</code>, <code>&amp;&amp;</code> 등의 논리 연산자를 bigint에 적용할 때도 일반 숫자와 유사하게 동작합니다.</p> <div id="6f76u5hunc" data-trusted="1" class="code-example"> <div class="codebox code-example__codebox"> <div class="toolbar codebox__toolbar"> <div class="toolbar__tool"> <a href="#" title="실행" data-action="run" class="toolbar__button toolbar__button_run"></a> </div> <div class="toolbar__tool"> <a href="#" title="샌드박스에서 열기" target="_blank" data-action="edit" class="toolbar__button toolbar__button_edit"></a> </div> </div> <div class="codebox__code" data-code="1"> <pre class="line-numbers language-javascript"><code>alert( 1n || 2 ); // 1 (1n은 truthy로 판단됩니다.) alert( 0n || 2 ); // 2 (0n은 falsy로 판단됩니다.)</code></pre> </div> </div> </div><h2><a class="main__anchor" name="ref-238" href="#ref-238">폴리필</a></h2><p>bigint 폴리필을 만드는 것은 꽤 까다롭습니다. <code>+</code>, <code>-</code>를 비롯한 다양한 연산자들이 bigint와 일반 숫자에서 다른 결과를 보이기 때문입니다.</p> <p>bigint끼리 나누면 항상 bigint를 반환한다는 것을 앞서 말씀드린 바 있습니다.</p> <p>동일한 결과가 나오게 하려면 폴리필에서 기존 코드를 분석하고 내장 연산자 모두를 관련 함수로 대체해 줄 수 있어야 합니다. 그런데 이렇게 하려면 품이 많이 들고 성능 이슈도 생길 수 있습니다.</p> <p>따라서 아직까진 제대로 된 bigint 폴리필이 나오지 않은 상황입니다.</p> <p>잘 알려진 폴리필은 없지만 <a href="https://github.com/GoogleChromeLabs/jsbi">JSBI</a> 라이브러리의 개발자들이 대안을 제시하긴 했습니다.</p> <p>이 라이브러리는 자체적으로 만든 방법을 사용해 큰 숫자를 구현합니다. 순수 bigint대신 라이브러리에서 만든 숫자를 사용하는 게 대안이 될 수 있습니다.</p> <table> <thead> <tr> <th>연산</th> <th>네이티브 <code>BigInt</code></th> <th>JSBI</th> </tr> </thead> <tbody> <tr> <td>일반 숫자를 사용해 bigint만들기</td> <td><code>a = BigInt(789)</code></td> <td><code>a = JSBI.BigInt(789)</code></td> </tr> <tr> <td>덧셈</td> <td><code>c = a + b</code></td> <td><code>c = JSBI.add(a, b)</code></td> </tr> <tr> <td>뺄셈</td> <td><code>c = a - b</code></td> <td><code>c = JSBI.subtract(a, b)</code></td> </tr> <tr> <td>…</td> <td>…</td> <td>…</td> </tr> </tbody> </table> <p>이렇게 JSBI를 사용해 숫자를 만든 다음 바벨 플러그인에 있는 폴리필을 사용해 JSBI 호출을 네이티브 bigint로 변환하면 원하는 브라우저에서 연산을 수행할 수 있습니다.</p> <p>In other words, this approach suggests that we write code in JSBI instead of native bigints. But JSBI works with numbers as with bigints internally, emulates them closely following the specification, so the code will be “bigint-ready”.</p> <p>We can use such JSBI code “as is” for engines that don’t support bigints and for those that do support – the polyfill will convert the calls to native bigints.</p> <h2><a class="main__anchor" name="ref-239" href="#ref-239">참고 자료</a></h2><ul> <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt">MDN docs on BigInt</a>.</li> <li><a href="https://tc39.es/ecma262/#sec-bigint-objects">Specification</a>.</li> </ul> </div></article></div><div class="page__nav-wrap"><a class="page__nav page__nav_prev" href="/reference-type" data-tooltip="참조 타입"><span class="page__nav-text"><span class="page__nav-text-shortcut"></span></span><span class="page__nav-text-alternate">이전 주제</span></a><a class="page__nav page__nav_next" href="/ui" data-tooltip="브라우저: 문서, 이벤트, 인터페이스"><span class="page__nav-text"><span class="page__nav-text-shortcut"></span></span><span class="page__nav-text-alternate">다음 주제</span></a></div><div class="article-tablet-foot tablet-only"><div class="article-tablet-foot__layout"><div class="share-icons"><span class="share-icons__title">공유</span><a class="share share_tw" href="https://twitter.com/share?url=https%3A%2F%2Fko.javascript.info%2Fbigint" rel="nofollow"></a><a class="share share_fb" href="https://www.facebook.com/sharer/sharer.php?s=100&amp;p%5Burl%5D=https%3A%2F%2Fko.javascript.info%2Fbigint" rel="nofollow"></a></div><div class="article-tablet-foot__map"><a class="map" href="/tutorial/map" data-action="tutorial-map"><span class="map__text">튜토리얼 지도</span></a></div></div></div><div class="comments formatted" id="comments"><div class="comments__header"><h2 class="comments__header-title"><a href="#comments" name="comments">댓글</a></h2><div class="comments__read-before"><span class="comments__read-before-link">댓글을 달기 전에 마우스를 올렸을 때 나타나는 글을 먼저 읽어주세요.</span><div class="comments__read-before-popup"><div class="comments__read-before-popup-i"><ul><li>추가 코멘트, 질문 및 답변을 자유롭게 남겨주세요. 개선해야 할 것이 있다면 댓글 대신 <a href='https://github.com/javascript-tutorial/ko.javascript.info/issues/new'>이슈를 만들어주세요</a>.</li><li>잘 이해되지 않는 부분은 구체적으로 언급해주세요.</li><li>댓글에 한 줄짜리 코드를 삽입하고 싶다면 <code>&lt;code&gt;</code> 태그를, 여러 줄로 구성된 코드를 삽입하고 싶다면 <code>&lt;pre&gt;</code> 태그를 이용하세요. 10줄 이상의 코드는 <a href='http://plnkr.co/edit/?p=preview'>plnkr</a>, <a href='http://jsbin.com'>JSBin</a>, <a href='http://codepen.io'>codepen</a> 등의 샌드박스를 사용하세요.</li></ul></div></div></div></div><div id="disqus_thread"></div><script>var disqus_config = function() { if (!this.page) this.page = {}; Object.assign(this.page, {"url":"https:\/\/ko.javascript.info\/bigint","identifier":"\/bigint"}); };</script><script>var disqus_shortname = "ko-javascript-info";</script><script>var disqus_enabled = true;</script></div></script></main></div><div class="sidebar page__sidebar sidebar sidebar_sticky-footer"><button class="sidebar__toggle" data-sidebar-toggle></button><a class="map" href="/tutorial/map" data-action="tutorial-map" data-tooltip="튜토리얼 지도"></a><div class="sidebar__inner"><div class="sidebar__content"><div class="sidebar__section"><h4 class="sidebar__section-title">챕터</h4><nav class="sidebar__navigation"><ul class="sidebar__navigation-links"><li class="sidebar__navigation-link"><a class="sidebar__link" href="/js-misc">기타</a></li></ul></nav></div><div class="sidebar__section"><h4 class="sidebar__section-title">주제 탐색</h4><nav class="sidebar__navigation"><ul class="sidebar__navigation-links"><li class="sidebar__navigation-link"><a class="sidebar__link" href="#ref-235">수학 연산자</a></li><li class="sidebar__navigation-link"><a class="sidebar__link" href="#ref-236">비교 연산자</a></li><li class="sidebar__navigation-link"><a class="sidebar__link" href="#ref-237">논리 연산</a></li><li class="sidebar__navigation-link"><a class="sidebar__link" href="#ref-238">폴리필</a></li><li class="sidebar__navigation-link"><a class="sidebar__link" href="#ref-239">참고 자료</a></li></ul></nav></div><div class="sidebar__section"><nav class="sidebar__navigation"><ul class="sidebar__navigation-links"><li class="sidebar__navigation-link"><a class="sidebar__link" href="#comments">댓글</a></li></ul></nav></div><div class="sidebar__section"><div class="sidebar__section-title">공유</div><a class="share share_tw sidebar__share" href="https://twitter.com/share?url=https%3A%2F%2Fko.javascript.info%2Fbigint" rel="nofollow"></a><a class="share share_fb sidebar__share" href="https://www.facebook.com/sharer/sharer.php?s=100&amp;p[url]=https%3A%2F%2Fko.javascript.info%2Fbigint" rel="nofollow"></a></div><div class="sidebar__section"><a class="sidebar__link" href="https://github.com/javascript-tutorial/ko.javascript.info/blob/master/1-js/99-js-misc/05-bigint" rel="nofollow">GitHub에서 수정하기</a></div></div></div></div></div></div><div class="page-footer"><ul class="page-footer__list"><li class="page-footer__item page-footer__item_copy">©&nbsp;2007—2025&nbsp; Ilya Kantor</li><li class="page-footer__item page-footer__item_about"><a class="page-footer__link" href="/about">프로젝트 설명</a></li><li class="page-footer__item page-footer__item_contact"><a class="page-footer__link" href="/about#contact-us">연락처</a></li></ul></div></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10