├── Chapter 1: Accustoming Yourself to JavaScript ├── Item 01: Know Which JavaScript You Are Using.md ├── Item 02: Understand JavaScript's Floating-Point Numbers.md ├── Item 03: Beware of Implicit Coercions.md ├── Item 04: Prefer Primitives to Object Wrappers.md ├── Item 05: Avoid using == with Mixed Types.md ├── Item 06: Learn the Limits of Semicolon Insertion.md ├── Item 07: Think of Strings As Sequences of 16-Bit Code Units.md └── README.md ├── Chapter 2: Variable Scope ├── Item 08: Minimize Use of the Global Object.md ├── Item 09: Always Declare Local Variables.md ├── Item 10: Avoid with.md ├── Item 11: Get Comfortable with Closures.md ├── Item 12: Understand Variable Hoisting.md ├── Item 13: Use Immediately Invoked Function Expressions to Create Local Scopes.md ├── Item 14: Beware of Unportable Scoping of Named Function Expressions.md ├── Item 15: Beware of Unportable Scoping of Block-Local Function Declarations.md ├── Item 16: Avoid Creating Local Variables with eval.md ├── Item 17: Prefer Indirect eval to Direct eval.md └── README.md ├── Chapter 3: Working with Functions ├── Item 18: Understand the Difference between Function, Method, and Constructor Calls.md ├── Item 19: Get Comfortable Using Higher-Order Functions.md ├── Item 20: Use call to Call Methods with a Custom Receiver.md ├── Item 21: Use apply to Call Functions with Different Numbers of Arguments.md ├── Item 22: Use arguments to Create Variadic Functions.md ├── Item 23: Never Modify the arguments Object.md ├── Item 24: Use a Variable to Save a Reference to arguments.md ├── Item 25: Use bind to Extract Methods with a Fixed Receiver.md ├── Item 26: Use bind to Curry Functions.md ├── Item 27: Prefer Closures to Strings for Encapsulating Code.md ├── Item 28: Avoid Relying on the toString Method of Functions.md ├── Item 29: Avoid Nonstandard Stack Inspection Properties.md └── README.md ├── Chapter 4: Objects and Prototypes ├── Item 30: Understand the Difference between prototype, getPrototypeOf, and__proto__.md ├── Item 31: Prefer Object.getPrototypeOf to __proto__.md ├── Item 32: Never Modify __proto__.md ├── Item 33: Make Your Constructors new-Agnostic.md ├── Item 34: Store Methods on Prototypes.md ├── Item 35: Use Closures to Store Private Data.md ├── Item 36: Store Instance State Only on Instance Objects.md ├── Item 37: Recognize the Implicit Binding of this.md ├── Item 38: Call Superclass Constructors from Subclass Constructors.md ├── Item 39: Never Reuse Superclass Property Names.md ├── Item 40: Avoid Inheriting from Standard Classes.md ├── Item 41: Treat Prototypes As an Implementation Detail.md └── Item 42: Avoid Reckless Monkey-Patching.md ├── Chapter 5: Arrays and Dictionaries ├── Item 43: Build Lightweight Dictionaries from Direct Instances of Object.md ├── Item 44: Use null Prototypes to Prevent Prototype Pollution.md ├── Item 45: Use hasOwnProperty to Protect Against Prototype Pollution.md ├── Item 46: Prefer Arrays to Dictionaries for Ordered Collections.md ├── Item 47: Never Add Enumerable Properties to Object.prototype.md ├── Item 48: Avoid Modifying an Object during Enumeration.md ├── Item 49: Prefer for Loops to for...in Loops for Array Iteration.md ├── Item 50: Prefer Iteration Methods to Loops.md ├── Item 51: Reuse Generic Array Methods on Array-Like Objects.md └── Item 52: Prefer Array Literals to the Array Constructor.md ├── Chapter 6: Library and API Design ├── Item 53: Maintain Consistent Conventions.md ├── Item 54: Treat undefined AsNo Value.md ├── Item 55: Accept Options Objects for Keyword Arguments .md ├── Item 56: Avoid Unnecessary State.md ├── Item 57: Use Structural Typing for Flexible Interfaces.md ├── Item 58: Distinguish between Array and Array-Like.md ├── Item 59: Avoid Excessive Coercion.md └── Item 60: Support Method Chaining.md ├── Chapter 7: Concurrency ├── Item 61: Don't Block the Event Queue on IO.md ├── Item 62: Use Nested or Named Callbacks for Asynchronous Sequencing.md ├── Item 63: Be Aware of Dropped Errors.md ├── Item 64: Use Recursion for Asynchronous Loops.md ├── Item 65: Don't Block the Event Queue on Computation.md ├── Item 66: Use a Counter to Perform Concurrent Operations.md ├── Item 67: Never Call Asynchronous Callbacks Synchronously.md └── Item 68: Use Promises for Cleaner Asynchronous Logic.md └── README.md /Chapter 1: Accustoming Yourself to JavaScript/Item 01: Know Which JavaScript You Are Using.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 01: Know Which JavaScript You Are Using.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/Item 02: Understand JavaScript's Floating-Point Numbers.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 02: Understand JavaScript's Floating-Point Numbers.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/Item 03: Beware of Implicit Coercions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 03: Beware of Implicit Coercions.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/Item 04: Prefer Primitives to Object Wrappers.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 04: Prefer Primitives to Object Wrappers.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/Item 05: Avoid using == with Mixed Types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 05: Avoid using == with Mixed Types.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/Item 06: Learn the Limits of Semicolon Insertion.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 06: Learn the Limits of Semicolon Insertion.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/Item 07: Think of Strings As Sequences of 16-Bit Code Units.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/Item 07: Think of Strings As Sequences of 16-Bit Code Units.md -------------------------------------------------------------------------------- /Chapter 1: Accustoming Yourself to JavaScript/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 1: Accustoming Yourself to JavaScript/README.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 08: Minimize Use of the Global Object.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 08: Minimize Use of the Global Object.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 09: Always Declare Local Variables.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 09: Always Declare Local Variables.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 10: Avoid with.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 10: Avoid with.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 11: Get Comfortable with Closures.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 11: Get Comfortable with Closures.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 12: Understand Variable Hoisting.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 12: Understand Variable Hoisting.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 13: Use Immediately Invoked Function Expressions to Create Local Scopes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 13: Use Immediately Invoked Function Expressions to Create Local Scopes.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 14: Beware of Unportable Scoping of Named Function Expressions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 14: Beware of Unportable Scoping of Named Function Expressions.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 15: Beware of Unportable Scoping of Block-Local Function Declarations.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 15: Beware of Unportable Scoping of Block-Local Function Declarations.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 16: Avoid Creating Local Variables with eval.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 16: Avoid Creating Local Variables with eval.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/Item 17: Prefer Indirect eval to Direct eval.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 2: Variable Scope/Item 17: Prefer Indirect eval to Direct eval.md -------------------------------------------------------------------------------- /Chapter 2: Variable Scope/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 02 變數範疇 -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 18: Understand the Difference between Function, Method, and Constructor Calls.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 18: Understand the Difference between Function, Method, and Constructor Calls.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 19: Get Comfortable Using Higher-Order Functions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 19: Get Comfortable Using Higher-Order Functions.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 20: Use call to Call Methods with a Custom Receiver.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 20: Use call to Call Methods with a Custom Receiver.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 21: Use apply to Call Functions with Different Numbers of Arguments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 21: Use apply to Call Functions with Different Numbers of Arguments.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 22: Use arguments to Create Variadic Functions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 22: Use arguments to Create Variadic Functions.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 23: Never Modify the arguments Object.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 23: Never Modify the arguments Object.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 24: Use a Variable to Save a Reference to arguments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 24: Use a Variable to Save a Reference to arguments.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 25: Use bind to Extract Methods with a Fixed Receiver.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 25: Use bind to Extract Methods with a Fixed Receiver.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 26: Use bind to Curry Functions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 26: Use bind to Curry Functions.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 27: Prefer Closures to Strings for Encapsulating Code.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 27: Prefer Closures to Strings for Encapsulating Code.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 28: Avoid Relying on the toString Method of Functions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 28: Avoid Relying on the toString Method of Functions.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/Item 29: Avoid Nonstandard Stack Inspection Properties.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/Item 29: Avoid Nonstandard Stack Inspection Properties.md -------------------------------------------------------------------------------- /Chapter 3: Working with Functions/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 3: Working with Functions/README.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 30: Understand the Difference between prototype, getPrototypeOf, and__proto__.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 30: Understand the Difference between prototype, getPrototypeOf, and__proto__.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 31: Prefer Object.getPrototypeOf to __proto__.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 31: Prefer Object.getPrototypeOf to __proto__.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 32: Never Modify __proto__.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 32: Never Modify __proto__.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 33: Make Your Constructors new-Agnostic.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 33: Make Your Constructors new-Agnostic.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 34: Store Methods on Prototypes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 34: Store Methods on Prototypes.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 35: Use Closures to Store Private Data.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 35: Use Closures to Store Private Data.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 36: Store Instance State Only on Instance Objects.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 36: Store Instance State Only on Instance Objects.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 37: Recognize the Implicit Binding of this.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 37: Recognize the Implicit Binding of this.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 38: Call Superclass Constructors from Subclass Constructors.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 38: Call Superclass Constructors from Subclass Constructors.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 39: Never Reuse Superclass Property Names.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 39: Never Reuse Superclass Property Names.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 40: Avoid Inheriting from Standard Classes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 40: Avoid Inheriting from Standard Classes.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 41: Treat Prototypes As an Implementation Detail.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 41: Treat Prototypes As an Implementation Detail.md -------------------------------------------------------------------------------- /Chapter 4: Objects and Prototypes/Item 42: Avoid Reckless Monkey-Patching.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 4: Objects and Prototypes/Item 42: Avoid Reckless Monkey-Patching.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 43: Build Lightweight Dictionaries from Direct Instances of Object.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 43: Build Lightweight Dictionaries from Direct Instances of Object.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 44: Use null Prototypes to Prevent Prototype Pollution.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 44: Use null Prototypes to Prevent Prototype Pollution.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 45: Use hasOwnProperty to Protect Against Prototype Pollution.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 45: Use hasOwnProperty to Protect Against Prototype Pollution.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 46: Prefer Arrays to Dictionaries for Ordered Collections.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 46: Prefer Arrays to Dictionaries for Ordered Collections.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 47: Never Add Enumerable Properties to Object.prototype.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 47: Never Add Enumerable Properties to Object.prototype.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 48: Avoid Modifying an Object during Enumeration.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 48: Avoid Modifying an Object during Enumeration.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 49: Prefer for Loops to for...in Loops for Array Iteration.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 49: Prefer for Loops to for...in Loops for Array Iteration.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 50: Prefer Iteration Methods to Loops.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 50: Prefer Iteration Methods to Loops.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 51: Reuse Generic Array Methods on Array-Like Objects.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 51: Reuse Generic Array Methods on Array-Like Objects.md -------------------------------------------------------------------------------- /Chapter 5: Arrays and Dictionaries/Item 52: Prefer Array Literals to the Array Constructor.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 5: Arrays and Dictionaries/Item 52: Prefer Array Literals to the Array Constructor.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 53: Maintain Consistent Conventions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 53: Maintain Consistent Conventions.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 54: Treat undefined AsNo Value.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 54: Treat undefined AsNo Value.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 55: Accept Options Objects for Keyword Arguments .md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 55: Accept Options Objects for Keyword Arguments .md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 56: Avoid Unnecessary State.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 56: Avoid Unnecessary State.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 57: Use Structural Typing for Flexible Interfaces.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 57: Use Structural Typing for Flexible Interfaces.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 58: Distinguish between Array and Array-Like.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 58: Distinguish between Array and Array-Like.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 59: Avoid Excessive Coercion.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 59: Avoid Excessive Coercion.md -------------------------------------------------------------------------------- /Chapter 6: Library and API Design/Item 60: Support Method Chaining.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 6: Library and API Design/Item 60: Support Method Chaining.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 61: Don't Block the Event Queue on IO.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 61: Don't Block the Event Queue on IO.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 62: Use Nested or Named Callbacks for Asynchronous Sequencing.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 62: Use Nested or Named Callbacks for Asynchronous Sequencing.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 63: Be Aware of Dropped Errors.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 63: Be Aware of Dropped Errors.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 64: Use Recursion for Asynchronous Loops.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 64: Use Recursion for Asynchronous Loops.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 65: Don't Block the Event Queue on Computation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 65: Don't Block the Event Queue on Computation.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 66: Use a Counter to Perform Concurrent Operations.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 66: Use a Counter to Perform Concurrent Operations.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 67: Never Call Asynchronous Callbacks Synchronously.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 67: Never Call Asynchronous Callbacks Synchronously.md -------------------------------------------------------------------------------- /Chapter 7: Concurrency/Item 68: Use Promises for Cleaner Asynchronous Logic.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/Chapter 7: Concurrency/Item 68: Use Promises for Cleaner Asynchronous Logic.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeepJavaScript/EffectiveJavaScript/HEAD/README.md --------------------------------------------------------------------------------