EffectiveJavaScript 書籍EffectiveJavaScriptをGoogle Apps ScriptのV8で読み替えたコードです 正誤表はこちら https://www.shoeisha.co.jp/book/detail/9784798131115 Chapter 1: Accustoming Yourself to JavaScript Item 1: Know Which JavaScript You Are Using Item 2: Understand JavaScript's Floating-Point Numbers Item 3: Beware of Implicit Coercions Item 4: Prefer Primitives to Object Wrappers Item 5: Avoid using == with Mixed Types Item 6: Learn the Limits of Semicolon Insertion Item 7: Think of Strings As Sequences of 16-Bit Code Units Chapter 2: Variable Scope Item 8: Minimize Use of the Global Object Item 9: Always Declare Local Variables Item 10: Avoid with Item 11: Get Comfortable with Closures Item 12: Understand Variable Hoisting Item 13: Use Immediately Invoked Function Expressions to Create Local Scopes Item 14: Beware of Unportable Scoping of Named Function Expressions Item 15: Beware of Unportable Scoping of Block-Local Function Declarations Item 16: Avoid Creating Local Variables with eval Item 17: Prefer Indirect eval to Direct eval Chapter 3: Working with Functions Item 18: Understand the Difference between Function, Method, and Constructor Calls Item 19: Get Comfortable Using Higher-Order Functions Item 20: Use call to Call Methods with a Custom Receiver Item 21: Use apply to Call Functions with Different Numbers of Arguments Item 22: Use arguments to Create Variadic Functions Item 23: Never Modify the arguments Object Item 24: Use a Variable to save a Reference to arguments Item 25: Use bind to Extract Methods with a Fixed Receiver Item 26: Use bind to Curry Functions Item 27: Prefer Closures to Strings for Encapsulating Code Item 28: Avoid Relying on the toString Method of Functions Item 29: Avoid Nonstandard Stack Inspection Properties Chapter 4: Objects and Prototypes Item 30: Understand the Difference between prototype, getPrototypeof, and__proto__ Item 31: Prefer Object.getPrototypeof to proto Item 32: Never Modify proto Item 33: Make Your Constructors new-Agnostic Item 34: Store Methods on Prototypes Item 35: Use Closures to Store Private Data Item 36: Store Instance State Only on Instance Objects Item 37: Recognize the Implicit Binding of this Item 38: Call Superclass Constructors from Subclass Constructors Item 39: Never Reuse Superclass Property Name Item 40: Avoid Inheriting from Standard Classes Item 41: Treat Prototypes As an Implementation Detail Item 42: Avoid Reckless Monkey-Patching Chapter 5: Arrays and Dictionaries Item 43: Build Lightweight Dictionaries from Direct Instances of Object Item 44: Use null Prototypes to Prevent Prototype Pollution Item 45: Use hasOwn Property to Protect Against Prototype Pollution Item 46: Prefer Arrays to Dictionaries for Ordered Collections Item 47: Never Add Enumerable Properties to Object.prototype Item 48: Avoid Modifying an Object during Enumeration Item 49: Prefer for Loops to for...in Loops for Array Iteration Item 50: Prefer Iteration Methods to Loops Item 51: Reuse Generic Array Methods on Array-Like Objects Item 52: Prefer Array Literals to the Array Constructor Chapter 6: Library and API Design Item 53: Maintain Consistent Conventions Item 54: Treat undefined As “No Value" Item 55: Accept Options Objects for Keyword Arguments Item 56: Avoid Unnecessary State Item 57: Use Structural Typing for Flexible Interfaces Item 58: Distinguish between Array and Array-Like Item 59: Avoid Excessive Coercion Item 60: Support Method Chaining Chapter 7: Concurrency Item 61: Don't Block the Event Queue on I/O Item 62: Use Nested or Named Callbacks for Asynchronous Sequencing Item 63: Be Aware of Dropped Errors Item 64: Use Recursion for Asynchronous Loops Item 65: Don't Block the Event Queue on Computation Item 66: Use a Counter to Perform Concurrent Operations Item 67: Never Call Asynchronous Callbacks Synchronously Item 68: Use Promises for Cleaner Asynchronous Logic