Everything in JS is either an object or a primitive
Primitives
Booleans:
true
,false
Numbers:
42
,3.14
,0b11010
,0x16
,NaN
,Infinity
Strings:
'Earth'
,"Mars"
Special values:
undefined
,null
Objects
The common way to declares is by using curly braces:
let myObj = { world: 'Earth' }
Attention: Objects are compared by reference. That being said, we have this:
let firstObj = {} let secondObj = {} // Check if they are equal firstObj === secondObj → false // Comparing an object with itself... firstObj === firstObj → true // Let's point the secondObj to firstObj secondObj = firstObj // Now they are equal firstObj === secondObj → true
3; // = 3
1.5; // = 1.5
// Some basic arithmetic works as you'd expect.
1 + 1; // = 2
0.1 + 0.2; // = 0.30000000000000004 (funky floating point arithmetic--be careful!)
8 - 1; // = 7
10 * 2; // = 20
35 / 5; // = 7
// Including uneven division.
5 / 2; // = 2.5
// Bitwise operations also work; when you perform a bitwise operation your float
// is converted to a signed int *up to* 32 bits.
1 << 2; // = 4
// Precedence is enforced with parentheses.
(1 + 3) * 2; // = 8
// There are special primitive values:
Infinity; // result of e.g. 1/0
-Infinity; // result of e.g. -1/0
NaN; // result of e.g. 0/0
undefined; // never use this yourself. This is the default value for "not assigned"
null; // use this instead. This is the programmer setting a var to "not assigned"
// There's also a boolean type.
true;
false;
// Strings are created with single quotes (') or double quotes (").
'abc';
"Hello, world";
// You can access characters in a string with `charAt`
"This is a string".charAt(0); // = 'T'
// ...or use `substring` to get larger pieces.
"Hello world".substring(0, 5); // = "Hello"
"Hello world".slice(0, 5); // does the same thing
"Hello world".substr(0, 5); // yet again
// `length` is a property, so don't use ().
"Hello".length; // = 5
// Searching strings
"Mary had a little lamb".search("had"); // returns 5
"Mary had a little lamb".indexOf("zebra"); // returns -1
// String to a character array
"one two three four".split(" "); // ['one', 'two', 'three', 'four']
// String replace
"happy birthday henry!".replace("h", "H"); // "Happy birthday Henry!"
// ES6 also introduces Symbol as a new primitive type
// But I'll add that on here once I actually figure out what it is