MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Aritmetické operace

Tento překlad není kompletní. Prosím pomozte přeložit tento článek z angličtiny.

Aritmetické operátory přijímají na vstupu číselné hodnoty (literály i proměnné) jako operandy a vrací jedinou číselnou hodnotu. Standardní aritmetické operace jsou sčítání (+), odčítání (-), násobení (*), a dělení (/).

Sčítání (+)

Produktem operátoru sčítání je součet číselných hodnot nebo připojení druhého řetězce k prvnímu.

Syntax

Operátor: x + y

Příklady

// Number + Number -> sčítání
1 + 2 // 3

// Boolean + Number -> sčítání
true + 1 // 2

// Boolean + Boolean -> sčítání
false + false // 0

// Number + String -> zřetězení
5 + 'foo' // "5foo"

// String + Boolean -> zřetězení
'foo' + false // "foofalse"

// String + String -> zřetězení
'foo' + 'bar' // "foobar"

Odčítání (-)

Operátor odčítání odečte od první číselné hodnoty tu druhou a jeho výsledkem je jejich rozdíl.

Syntax

Operátor: x - y

Příklady

5 - 3 // 2
3 - 5 // -2
'foo' - 3 // NaN

Dělení (/)

Výsledkem dělení je podíl jeho číselných operandů, kde levý operand je dělenec a ten pravý dělitel.

Syntax

Operátor: x / y

Příklady

1 / 2      // v JavaScriptu je výsledkem 0.5
1 / 2      // v Javě je výsledkem 0
// (ani jedno z čísel není explicitně deklarováno jako číslo s plovoucí desetinnou čárkou)

1.0 / 2.0  // v JavaScriptu i Javě je výsledek 0.5

2.0 / 0    // v JavaScriptu vrací Infinity (nekonečno)
2.0 / 0.0  // zase vrací Infinity
2.0 / -0.0 // vrací -Infinity

Násobení (*)

Operátor násobení vrací součin jeho operandů (činitelů).

Syntax

Operátor: x * y

Příklady

2 * 2 // 4
-2 * 2 // -4
Infinity * 0 // NaN (Not a Number - nečíselná hodnota)
Infinity * Infinity // Infinity
'foo' * 2 // NaN

Zbytek po dělení (%)

Operátor zbytku vrací zbytek po dělení prvního operandu tím druhým. Zbytek přebírá znaménko dělence tedy prvního operandu, čímž se liší od konvenčního operátoru modulo, který používá znaménko dělitele. Existuje však návrh zavést skutečný operátor modulo do budoucí specifikace ECMAScriptu.

Syntax

Operátor: x % y

Příklady

12 % 5 // 2
-1 % 2 // -1
NaN % 2 // NaN
1 % 2 // 1
2 % 3 // 2
-4 % 2 // -0
5.5 % 2 // 1.5

Umocňování (**)

Operátor umocňování vrací první operand umocněný na ten druhý. To znamená, že výsledkem a ** b je ab. Proměnná a představuje mocněnce a b mocnitele. Tato operace je asociativní zprava. a ** b ** c je rovno a ** (b ** c).

Syntax

Operátor: x ** y

Poznámky

Ve většině jazyků jako je PHP a Python, ve kterých také existuje operátor umocňování, má tato operace přednost před unárními operacemi jako + a -, ale existuje i několik výjimek. Například v Bashi je operátor ** definován tak, že má nižší prioritu než unární operátory. V JavaScriptu není možné napsat nejednoznačný výraz umocnění tzn. přímo před první operand nelze vložit unární operátor (+/-/~/!/delete/void/typeof).

-2 ** 2; 
// 4 v Bashi, -4 v ostatních jazycích. 
// Tato operace je v JavaScriptu neplatná kvůli nejednoznačnosti. 


-(2 ** 2); 
// v JavaScriptu vrací -4, protože autorův záměr je jednoznačný. 

Příklady

2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN

2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64

Obrácení znaménka výsledku operace:

-(2 ** 2) // -4

Mocnění záporného čísla:

(-2) ** 2 // 4

Pokud by číslo -2 byla proměnná s touto hodnotou, nebyla by závorka potřeba

Poznámka: V JavaScriptu existuje i bitový operátor ^ (logický XOR). **^ jsou diametrálně odlišné (například: 2 ** 3 === 8 a přitom 2 ^ 3 === 1.)

 

Increment (++)

Operátor incrementu přičte k proměnné jedničku a vrátí jednu z následujících hodnot:

  • Pokud je napsán za operandem jako postfix (např. x++), vrátí hodnotu před jejím zvětšením.
  • Pokud je napsán před operandem jako prefix (např. ++x), pak vrátí proměnnou nejdříve zvětší o jedničku a pak vrátí výsledek.

Syntax

Operátor: x++ nebo ++x

Příklady

// Postfix 
var x = 3;
y = x++; // y = 3, x = 4

// Prefix
var a = 2;
b = ++a; // a = 3, b = 3

Decrement (--)

Operátor decrementu odečte od proměnné jedničku a vrátí jednu z následujících hodnot:

  • Pokud je použit jako postfix (např. x--), vrátí hodnotu před odečtem.
  • Pokud je použit jako prefix (např. --x), vrátí hodnotu až po odečtu jedničky.

Syntax

Operátor: x-- nebo --x

Příklady

// Postfix 
var x = 3;
y = x--; // y = 3, x = 2

// Prefix
var a = 2;
b = --a; // a = 1, b = 1

Unární negace (-)

Operátor unární negace se píše před operand a změní znaménko jeho hodnoty.

Syntax

Operátor: -x

Příklady

var x = 3;
y = -x; // y = -3, x = 3

Unární plus (+)

Tento operátor se stejně jako unární - umisťuje před operand a vyhodnotí ho jako číslo, tedy pokud už není. Přestože unární negace je také schopná konvertovat nečíselnou hodnotu na číselnou, unární plus je rychlejší, protože na čísle neprovádí žádné další operace. Dokáže převést řetězcovou reprezentaci celých čísel i čísel s plovoucí desetinnou čárkou nebo neřetězcové hodnoty true, false, a null. Jsou podporována čísla v desítkové i šestnáctkové (s předponou "0x") soustavě. Záporná čísla jsou také podporována (jen pro desetítkové soustavě). Pokud není možné převést hodnotu na číslo, vyhodnotí se výraz jako NaN.

Syntax

Operátor: +x

Příklady

+3     // 3
+'3'   // 3
+true  // 1
+false // 0
+null  // 0
+function(val){  return val } // NaN

Specifikace

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard Initial definition.
ECMAScript 5.1 (ECMA-262) Standard Defined in several sections of the specification: Additive operators, Multiplicative operators, Postfix expressions, Unary operators.
ECMAScript 2015 (6th Edition, ECMA-262) Standard Defined in several sections of the specification: Additive operators, Multiplicative operators, Postfix expressions, Unary operators.
ECMAScript 2016 (ECMA-262) Standard Added Exponentiation operator.
ECMAScript Latest Draft (ECMA-262) Draft  

Kompatibilita s prohlížeči

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Exponentiation operator 52.0 ? 52.0 (52.0) ? (Yes) ?
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Exponentiation operator No support 51.0 ? 52.0 (52.0) ? ? ? 52.0

Vizte také

Štítky a přispěvatelé do dokumentace

 Přispěvatelé této stránky: rousek
 Poslední aktualizace od: rousek,