Expressions(ννμ)μ΄λ κ°μ λ°ννλ μ ν¨ν μ λλ μ½λμ΄λ©°, μ«μ, λ¬Έμμ΄, λ Όλ¦¬κ° λ±μ μμ κ°μ΄λ€.
λͺ¨λ ννμμ κ΅¬λ¬Έμ΄ μ ν¨νλ€λ©΄ μ΄λ€ κ°μΌλ‘ μ΄νλμ§λ§, κ°λ μ μΌλ‘λ 2 κ°μ§ λ²μ£Όλ‘ λλλ€.
ex) x = 7
x = 7
ννμμ =
μ°μ°μλ₯Ό μ¬μ©ν΄μ κ° 7μ x
λ³μμ ν λΉνλ―λ‘ ννμ μ체λ 7λ‘ νκ°λ¨ex) 3 + 4
3 + 4
ννμμ +
μ°μ°μλ₯Ό μ¬μ©ν΄μ 3κ³Ό 4λ₯Ό λνμ§λ§ κ²°κ³ΌμΈ 7μ λ³μμ ν λΉνλμ§λ μμthis
ν€μλλ₯Ό .
μ΄λ []
νκΈ°λ²μ μ¬μ©νμ¬ νμ¬ κ°μ²΄λ₯Ό μ°Έμ‘°νλ€. μΌλ°μ μΌλ‘ this
λ λ©μλμ νΈμΆ κ°μ²΄λ₯Ό μ°Έμ‘°νλ€.
this["propertyName"];
this.propertyName;
μμ) μ΅λμ μ΅μ κ°μ λ°μμ, μ΄λ€ κ°μ²΄μ value
μμ± μ ν¨μ±μ κ²μ¦νλ validate
λΌλ ν¨μλ₯Ό κ°μ
function validate(obj, lowval, hival) {
if (obj.value < lowval || obj.value > hival) {
console.log("Invalid Value!");
}
}
<p>18κ³Ό 99 μ¬μ΄μ μλ₯Ό μ
λ ₯:</p>
<input type="text" name="age" size="3" onchange="validate(this, 18, 99);" />
κ·Έλ£Ή μ°μ°μ ()
λ ννμ νκ°μ μ°μ μμλ₯Ό μ‘°μ νλ€. μλ₯Ό λ€μ΄, κ³±νκΈ°μ λλκΈ°λ³΄λ€ λνκΈ°μ λΉΌκΈ° μ°μ°μ λ¨Όμ μνν μ μλ€.
const a = 1;
const b = 2;
const c = 3;
// κΈ°λ³Έ μ°μ μμμμλ
a + b * c; // 7
// μ΄λ° μμλ‘ νκ°ν¨
a + (b * c); // 7
// μ°μ μμ μ¬μ μ
// κ³±νκΈ°λ³΄λ€ λνκΈ°λ₯Ό λ¨Όμ μν
(a + b) * c; // 9
// ...νλ©΄ μλμ κ°μ
a * c + b * c; // 9
new
μ°μ°μλ₯Ό μ¬μ©νλ©΄ user-defined object type(μ¬μ©μ μ μ κ°μ²΄ νμ
)μ΄λ built-in object types(λ΄μ₯ κ°μ²΄ νμ
)μ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
const objectName = new ObjectType(param1, param2, /* β¦, */ paramN);
super
ν€μλλ κ°μ²΄μ λΆλͺ¨κ° κ°μ§ ν¨μλ₯Ό νΈμΆν λ μ¬μ©νλ€. μλ₯Ό λ€μ΄, ν΄λμ€μμ λΆλͺ¨μ μμ±μλ₯Ό νΈμΆν΄μΌ ν λ μ μ©νκ² μΈ μ μλ€.
super(args); // λΆλͺ¨ μμ±μ νΈμΆ
super.functionOnParent(args);
π 'ννμμ νκ°νλ€'λ ννμμ κ°κ³Ό λ³μ, ν¨μ λ±μ κ°μ κ³μ°νλ νμλ₯Ό λ§νλ€.
a + b
μμ +
λ operator(μ°μ°μ)μ΄κ³ aμ bλ μ°μ° λμμ΄ λλ ννμμ΄λ©°, μ΄λ₯Ό operand(νΌμ°μ°μ)λΌκ³ λΆλ₯Έλ€.
JavaScriptλ μ΄ν μ°μ°μμ λ¨ν μ°μ°μλ₯Ό λͺ¨λ ν¬ν¨νλ©°, μ μΌν μΌν μ°μ°μλ‘ μ‘°κ±΄ μ°μ°μλ κ°μ§κ³ μλ€. μ΄ν μ°μ°μλ μ°μ°μμ μκ³Ό λ€μ νλμ© μ΄ λ κ°μ νΌμ°μ°μκ° νμνλ€.μ΄ν μ°μ°μμ μμλ‘λ 3+4
μ x*y
μλ€.
νΌμ°μ°μ1 μ°μ°μ νΌμ°μ°μ2
λ¨ν μ°μ°μλ μ°μ°μμ μμ΄λ λ€μ νλμ νΌμ°μ°μκ° νμνλ€.
λ¨ν μ°μ°μμ μμλ‘λ x++
λλ ++x
κ° μλ€.
μ°μ°μ νΌμ°μ°μ
νΌμ°μ°μ μ°μ°μ
μ°μ°μμλ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ κ²°ν©νμ¬ μ°μ°ν μ§ μλλ©΄ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ κ²°ν©νμ¬ μ°μ°ν μ§ μ°μ° λ°©ν₯μ κ²°μ νλ κ²°ν© λ²μΉμ΄ μ‘΄μ¬νλ€.
Operator Precedence
Precedence | Associativity | Individual operators |
---|---|---|
1: κ·Έλ£Ή | n/a | (x) |
2: μ κ·Όκ³Ό νΈμΆ | μ’ β μ° | x.y Member access, x?.y Optional chaining |
n/a | x[y] Computed member access, new x(y) new with argument list, x(y) Function call | |
3: new | n/a | new xnew without argument list |
4: νμ μ°μ°μ | n/a | x++, x-- |
5: μ μ μ°μ°μ | n/a |
++x, --x,
!x λ
Όλ¦¬ NOT,
~x λΉνΈ NOT,
+x λ¨ν +,
-x λ¨ν -,
typeof x, void x, delete x, await x |
6: κ±°λμ κ³± | μ° β μ’ | x ** y |
7: κ³±μ μ°μ°μ | μ’ β μ° | x * y, x / y, x % y |
8: λ§μ μ°μ°μ | μ’ β μ° | x + y, x - y |
9: λΉνΈ shift | μ’ β μ° | x << y, x >> y, x >>> y λΆνΈ μλ μ€λ₯Έμͺ½ μννΈ |
10: κ΄κ³ μ°μ°μ | μ’ β μ° | x < y, x <= y, x > y, x >= y, x in y, x instanceof y |
11: νλ± μ°μ°μ | μ’ β μ° | x == y, x != y, x === y, x !== y |
12: λΉνΈ AND | μ’ β μ° | x & y |
13: λΉνΈ XOR | μ’ β μ° | x ^ y |
14: λΉνΈ OR | μ’ β μ° | x | y |
15: λ Όλ¦¬ AND | μ’ β μ° | x && y |
16 | μ’ β μ° | x || y λ Όλ¦¬ OR, x ?? y |
17: μΌν μ°μ°μ | μ° β μ’ | x ? y : z |
18: ν λΉκ³Ό κΈ°ν | μ° β μ’ |
x = y,
x += y,
x -= y,
x **= y,
x *= y,
x /= y,
x %= y,
x <<= y, x >>= y, x >>>= y, x &= y, x ^= y, x |= y, x &&= y, x ||= y, x ??= y null λ³ν© μ°μ°μ |
μ° β μ’ | x => y Arrow function expressions | |
n/a | yield x, yield* x, ...x Spread syntax | |
19: μ½€λ§ | μ’ β μ° | x, y Comma operator |
π Associativity
left-to-right(μ’κ²°ν©μ±) : μ’ β μ°
right-to-left(μ°κ²°ν©μ±) : μ° β μ’
μ°Έκ³ λ¬Έν,
μ΄μ νλ‘μ, γλͺ¨λ μλ°μ€ν¬λ¦½νΈ μ λ¬Έγ, μμ¬μ μ, κΈΈλ², 2019
https://velog.io/@reveloper-1311/JS-ννμExpressionμ΄λ
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_operators
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_precedence