Part I. Core JavaScript
Ch 2. Lexical Structure
- The return,break, andcontinuestatements often stand alone, but they are sometimes followed by an identifier or expression. If a line break appears after any of these words (before any other tokens), JavaScript will always interpret that line break as a semicolon.
For example, if you write:
		return 
				true;
JavaScript assumes you meant:
		return; true;
Ch 3. Types, Values, and Variables
- 
    Objects and arrays are mutable. Numbers, booleans, null, and undefined are immutable, strings are immutable too. 
- 
    Arithmetic in JavaScript does not raise errors in cases of overflow, underflow, or divi- sion by zero. Print Infinityand-Infinityinstead.
- 
    Division by zero is not an error in JavaScript: it simply returns infinity or negative infinity. There is one exception, however: zero divided by zero does not have a well- defined value, and the result of this operation is the special not-a-number value, printed as NaN. NaN also arises if you attempt to divide infinity by infinity, or take the square root of a negative number or use arithmetic operators with non-numeric operands that cannot be converted to numbers. 
- 
    The not-a-number value has one unusual feature in JavaScript: it does not compare equal to any other value, including itself. This means that you can’t write x == NaNto determine whether the value of a variablexisNaN. Instead, you should writex != x. That expression will be true if, and only if,xisNaN.
- 
    The negative zero value is also somewhat unusual. var zero = 0; // Regular zero var negz = -0; // Negative zero zero === negz // => true: zero and negative zero are equal 1/zero === 1/negz // => false: infinity and -infinity are not equal
- 
    Because of rounding error,the difference between the approximations of .3and.2is not exactly the same as the difference between the approximations of.2and.1.var x = .3 - .2; // thirty cents minus 20 cents var y = .2 - .1; // twenty cents minus 10 cents x == y // => false: the two values are not the same!
In JS, 0.3-0.2=0.09999999999999998;
- 
    Remember that strings are immutable in JavaScript. Methods like replace()andtoUpperCase()return new strings: they do not modify the string on which they are invoked.
- 
    Diff between nullandundefined:typeof(null) // => object typeof(undefined) // => undefined null == undefined // =>true null === undefined // =>false
Ch 4. Expressions and Operators
To be Continued …

This work is licensed under a CC A-S 4.0 International License.