Question
This question's answers are a[community effort](/help/privileges/edit- community-wiki). Edit existing answers to improve this post. It is not currently accepting new answers or interactions.
What is this?
This is a collection of questions that come up every now and then about syntax in JavaScript. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
Why is this?
Stack Overflow does not allow searching for particular characters. As a consequence, many questions about operators and other syntax tokens are not found easily when searching for them. This also makes closing duplicates more difficult. The list below is to help with this issue.
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from the ECMAScript Spec.
Additionally, this is a blatant copy of the [PHP](https://stackoverflow.com/questions/3737139/reference-what-does-this- symbol-mean-in-php) symbol reference. We needed a JS one.
Please help. Edit and add links to other operators/syntax references, or if you can't find good questions/answers on a particular piece of syntax, add an answer to this question and link it
Answer
See the documentation on MDN about [expressions and operators](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Operators) and [statements](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Statements).
Basic keywords and general expressions
this
keyword:
var x = function()
vs. function x()
— Function declaration syntax
(function(){
…})()
— IIFE (Immediately Invoked Function Expression)
- What is the purpose?, How is it called?
- Why does
(function(){…})();
work butfunction(){…}();
doesn't? (function(){…})();
vs(function(){…}());
- shorter alternatives:
!function(){…}();
- What does the exclamation mark do before the function?+function(){…}();
- JavaScript plus sign in front of function expression- !function(){ }() vs (function(){ })(),
!
vs leading semicolon
(function(window, undefined){…}(window));
someFunction()()
— Functions which return other functions
=>
— Equal sign, greater than: arrow function expression syntax
|>
— Pipe, greater than: Pipeline operator
function*
, yield
, yield*
— Star after function
or yield
:
generator functions
- What is "function*" in JavaScript?
- What's the yield keyword in JavaScript?
- Delegated yield (yield star, yield *) in generator functions
[
…]
, [ value ]
, Array()
— Square brackets: array notation
- What’s the difference between "Array()" and "[]" while declaring a JavaScript array?
- What is array literal notation in javascript and when should you use it?
If the square brackets appear on the left side of an assignment ([a] = ...
),
or inside a function's parameters, it's a [destructuring
assignment](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment).
{
…}
, { key: value }
, { [key]: value }
— Curly brackets: object
literal syntax (not to be confused with blocks)
- What do curly braces in JavaScript mean?
- Javascript object literal: what exactly is {a, b, c}?
- What do square brackets around a property name in an object literal mean?
- How does this object method definition work without the "function" keyword? (ES2015 Method definitions)
If the curly brackets appear on the left side of an assignment ({ a } = ...
)
or inside a function's parameters, it's a [destructuring
assignment](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment).
…`${`…`}`…
— Backticks, dollar sign with curly brackets: template
literals
- What does this
…${…}…
code from the node docs mean? - Usage of the backtick character (`) in JavaScript?
- What is the purpose of template literals (backticks) following a function in ES6?
/
…/
— Slashes: regular expression literals
$
— Dollar sign in regex replace patterns: $$
, $&
, $``,
$',
$
n`
()
— Parentheses: grouping operator
Property-related expressions
obj.prop
, obj[prop]
, obj["prop"]
— Square brackets or dot: property
accessors
?.
, ?.[]
, ?.()
— Question mark, dot: optional chaining operator
- Question mark after parameter
- Null-safe property access (and conditional assignment) in ES6/2015
- Optional Chaining in JavaScript
- Is there a null-coalescing (Elvis) operator or safe navigation operator in javascript?
- Is there a "null coalescing" operator in JavaScript?
::
— Double colon: bind operator
new
operator
...iter
— Three dots: spread syntax; rest parameters
(...rest) => {}
— What is the meaning of “…args” (three dots) in a function definition?fn(...args)
— What is the meaning of “foo(…arg)” (three dots in a function call)?[...iter]
— javascript es6 array feature […data, 0] “spread operator”{...props}
— Javascript Property with three dots (…), What does the '…rest' stand for in this object destructuring?
Increment and decrement
++
, --
— Double plus or minus: pre- / post-increment / -decrement
operators
Unary and binary (arithmetic, logical, bitwise) operators
delete
operator
void
operator
+
, -
— Plus and minus: addition or concatenation, and subtraction
operators; unary sign operators
- What does = +_ mean in JavaScript, Single plus operator in javascript
- What's the significant use of unary plus and minus operators?
- Why is [1,2] + [3,4] = "1,23,4" in JavaScript?
- Why does JavaScript handle the plus and minus operators between strings and numbers differently?
|
, &
, ^
, ~
— Single pipe, ampersand, circumflex, tilde: [bitwise
OR, AND, XOR, & NOT operators](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_logical_operators)
- What do these JavaScript bitwise operators do?
- How to: The ~ operator?
- Is there a & logical operator in Javascript
- What does the "|" (single pipe) do in JavaScript?
- What does the operator |= do in JavaScript?
- What does the ^ (caret) symbol do in JavaScript?
- Using bitwise OR 0 to floor a number, How does x|0 floor the number in JavaScript?
- Why does
~1
equal-2
? - What does ~~ ("double tilde") do in Javascript?
- How does !!~ (not not tilde/bang bang tilde) alter the result of a 'contains/included' Array method call? (also here and here)
%
— Percent sign: remainder operator
&&
, ||
, !
— Double ampersand, double pipe, exclamation point:
logical operators
- Logical operators in JavaScript — how do you use them?
- Logical operator || in javascript, 0 stands for Boolean false?
- What does "var FOO = FOO || {}" (assign a variable or an empty object to that variable) mean in Javascript?, JavaScript OR (||) variable assignment explanation, What does the construct x = x || y mean?
- Javascript AND operator within assignment
- What is "x && foo()"? (also here and here)
- What is the !! (not not) operator in JavaScript?
- What is an exclamation point in JavaScript?
??
— Double question mark: nullish-coalescing operator
- How is the nullish coalescing operator (??) different from the logical OR operator (||) in ECMAScript?
- Is there a null-coalescing (Elvis) operator or safe navigation operator in javascript?
- Is there a "null coalescing" operator in JavaScript?
**
— Double star: power operator (exponentiation)
x ** 2
is equivalent toMath.pow(x, 2)
- Is the double asterisk ** a valid JavaScript operator?
- MDN documentation
Equality operators
==
, ===
— Equal signs: equality operators
- Which equals operator (== vs ===) should be used in JavaScript comparisons?
- How does JS type coercion work?
- In Javascript,
== " " evaluates to true. Why is it so? - [] == ![] evaluates to true
- Why does "undefined equals false" return false?
- Why does !new Boolean(false) equals false in JavaScript?
- Javascript 0 == '0'. Explain this example
- Why false == "false" is false?
!=
, !==
— Exclamation point and equal signs: inequality operators
Bit shift operators
<<
, >>
, >>>
— Two or three angle brackets: [bit shift
operators](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_shift_operators)
- What do these JavaScript bitwise operators do?
- Double more-than symbol in JavaScript
- What is the JavaScript >>> operator and how do you use it?
Conditional operator
…?
…:
… — Question mark and colon: conditional (ternary) operator
- Question mark and colon in JavaScript
- Operator precedence with JavaScript's ternary operator
- How do you use the ? : (conditional) operator in JavaScript?
[Assignment operators](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Operators#Assignment_operators)
=
— Equal sign: assignment operator
This symbol is also used for default parameters or default values in a [destructuring assignment](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment):
- What does (state = {}) => state mean?
- What does ({"key": "value"} = {}) syntax mean inside a JavaScript function
%=
— Percent equals: remainder assignment
+=
— Plus equals: addition assignment operator
[&&=
](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Operators/Logical_AND_assignment),
[||=
](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment),
[??=
](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Operators/Logical_nullish_assignment) —
Double ampersand, pipe, or question mark, followed by equal sign: logical
assignments
- What purpose do &&=, ||= and ??= serve?
- Replace a value if null or undefined in JavaScript
- Set a variable if undefined
- Ruby’s
||=
(or equals) in JavaScript? - Original proposal
- Specification
<<=
, >>=
, >>>=
, &=
, ^=
, |=
— Double less than, double greater
than, triple greater than, ampersand, caret, or pipe followed by equal sign: bitwise assignments
Destructuring
- of function parameters: Where can I get info on the object parameter syntax for JavaScript functions?
- of arrays: Multiple assignment in JavaScript? What does
[ a, b, c ] = [ 1, 2, 3 ]
mean? - of objects/imports: Javascript object bracket notation ({ Navigation } =) on left side of assign
Comma operator
,
— Comma operator (not to be confused with the comma used in variable
declarations)
- What does the comma operator do in JavaScript?
- Comma operator returns first value instead of second in argument list?
- When is the comma operator useful?
Control flow
{
…}
— Curly brackets: blocks (not to be confused with object literal
syntax)
Declarations
var
, let
, const
— Declaring variables
- What is the difference between "let" and "var"?
- Are there constants in JavaScript?
- What is the temporal dead zone?
var a, b;
— Comma used in variable declarations (not to be confused with the comma operator): JavaScript variable definition: Commas vs. Semicolons