aboutsummaryrefslogtreecommitdiff
path: root/files/ko/web/javascript/reference/operators/exponentiation/index.html
blob: aaa729c10b8a7a610068571305b6104d49f7fe8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
---
title: 거듭제곱 (**)
slug: Web/JavaScript/Reference/Operators/Exponentiation
tags:
  - JavaScript
  - Language feature
  - Operator
  - Reference
browser-compat: javascript.operators.exponentiation
translation_of: Web/JavaScript/Reference/Operators/Exponentiation
---

<div>{{jsSidebar("Operators")}}</div>

<p>
  거듭제곱 연산자(<code>**</code>)는 왼쪽 피연산자를 밑, 오른쪽 피연산자를 지수로 한 값을 구합니다.
  {{jsxref("BigInt")}}도 피연산자로 받을 수 있다는 점을 제외하면 {{jsxref("Math.pow()")}}와 같습니다.
</p>

<div>{{EmbedInteractiveExample("pages/js/expressions-exponentiation.html")}}</div>

<h2 id="syntax">구문</h2>

<pre class="brush: js">x ** y</pre>

<h2 id="description">설명</h2>

<p>
  거듭제곱 연산자는 우측 결합성을 가집니다. 따라서 <code><var>a</var> ** <var>b</var> ** <var>c</var></code
  ><code><var>a</var> ** (<var>b</var> ** <var>c</var>)</code>와 같습니다.
</p>

<p>
  PHP, Python 등 거듭제곱 연산자(<code>**</code>)를 포함하는 언어의 대부분은 거듭제곱 연산자가 단항 연산자(단항
  <code>+</code>, <code>-</code> 등)보다 높은 우선순위를 가집니다. 그러나 Bash처럼 단항 연산자가 더 높은 우선순위를
  가지는 예외의 언어도 있습니다.
</p>

<p>
  반면 JavaScript에서는 모호한 거듭제곱 표현식을 작성하는 것이 불가능합니다. 단항
  연산자(<code>+/-/~/!/delete/void/typeof</code>)를 밑 피연산자의 바로 앞에 사용할 수 없으며, 사용하려고 하면
  {{jsxref("SyntaxError")}}가 발생합니다.
</p>

<pre class="brush: js">
-2 ** 2;
// Bash에서는 4, 다른 언어에서는 -4
// 모호한 식이므로 JavaScript에서 유효하지 않음

-(2 ** 2);
// JavaScript에서 -4, 저자의 의도가 명확함
</pre>

<p>
  참고로 어떤 언어에선 캐럿 기호 <kbd>^</kbd>를 거듭제곱에 사용하지만, JavaScript에서 캐럿은
  <a href="/ko/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR">비트 XOR 연산자</a>에서
  사용합니다.
</p>

<h2 id="examples">예제</h2>

<h3 id="basic_exponentiation">기본 거듭제곱</h3>

<pre class="brush: js">
2 ** 3   // 8
3 ** 2   // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN
</pre>

<h3 id="associativity">연관성</h3>

<pre class="brush: js">
2 ** 3 ** 2   // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64
</pre>
  
<h3 id="usage_with_unary_operators">단항 연산자와 사용하기</h3>

<p>거듭제곱 결과의 부호를 반전하려면,</p>

<pre class="brush: js">-(2 ** 2) // -4</pre>

<p>거듭제곱 표현식의 밑에 음수를 제공하려면,</p>

<pre class="brush: js">(-2) ** 2 // 4</pre>

<h2 id="specifications">명세</h2>

{{Specifications}}

<h2 id="browser_compatibility">브라우저 호환성</h2>

<p>{{Compat}}</p>

<h2 id="see_also">같이 보기</h2>

<ul>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Addition">더하기 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Subtraction">빼기 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Division">나누기 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Multiplication">곱하기 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Remainder">나머지 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Increment">증가 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Decrement">감소 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Unary_negation">단항 부정 연산자</a></li>
  <li><a href="/ko/docs/Web/JavaScript/Reference/Operators/Unary_plus">단항 플러스 연산자</a></li>
</ul>