JavaScript语言精粹-毒瘤、糟粕(应对)

毒瘤

  1. 不使用全局变量
  2. 使用块级作用域,不var
  3. return与返回值要位于同一行,否则当自动插入分号后会返回undefined
  4. 当对象的属性名与js保留字相同时,无法使用点语法,使用括号表示法
  5. js字符是16位的,Unicode将一对字符视为一个单一的字符,而js将其认为是两个不同的字符
  6. 注意typeof对于null和正则返回'object'
  7. parseInt在遇到非数字时会停止,注意parseInt('16')和parseInt('16 jk')均返回16
  8. +运算符会根据参数来判断是数值计算还是字符串拼接
  9. NaN不是数字并且它不等于自身,typeof对于其返回'number',判断值是否为数值类型可用typeof value === 'number' && isFinite(value)
  10. js的数组是伪数组,不需设置维度、不会越界,但性能不如真正的数组,typeof不能区别数组与对象,可用instanceof区别
  11. js的假值:0、NaN、''、false、null、undefined
  12. hasOwnProperty是一个function而不是运算符,不会查询原型链上的属性,可以被替换,不要使用obj.hasOwnProperty=null之类
  13. js的默认对象不是空对象,当原型链可能对我们产生影响时,使用Object.create(null)创建纯净的对象

糟粕

  1. 不使用==,而是===;不使用!=,而是!==
  2. 不使用with语句
  3. 不使用eval语句
  4. 适当地使用continue语句能提高可读性,但性能不如重构去除continue的代码
  5. swith中的每个case下注意break,小心穿越到下个case
  6. if语句可以接受单行语句,但此时还是应加上花括号
  7. ++、--不够严谨,使得代码过于拥挤,不使用的话代码可以变的更整洁
  8. 使用位操作符(& | ^ ~ >> >>> <<)要小心点,&容易误写为&&
  9. function语句定义的函数存在声明提升,使用函数表达式或IIFE替代之
  10. 不要使用类型的包装对象,形如new Boolean()、new Number()、new String(),另外也应避免使用new Object()、new Array(),使用{}、[]代替
  11. new运算符后跟的函数应以首字母大写的形式命名
  12. js中的void是一个运算符,接受一个运算数并始终返回undefined,没有作用,应避免使用

 

欢迎关注、点赞

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
英文CHM版目录,可复制,文是PDF版. Chapter 1. Good Parts Section 1.1. Why JavaScript? Section 1.2. Analyzing JavaScript Section 1.3. A Simple Testing Ground Chapter 2. Grammar Section 2.1. Whitespace Section 2.2. Names Section 2.3. Numbers Section 2.4. Strings Section 2.5. Statements Section 2.6. Expressions Section 2.7. Literals Section 2.8. Functions Chapter 3. Objects Section 3.1. Object Literals Section 3.2. Retrieval Section 3.3. Update Section 3.4. Reference Section 3.5. Prototype Section 3.6. Reflection Section 3.7. Enumeration Section 3.8. Delete Section 3.9. Global Abatement Chapter 4. Functions Section 4.1. Function Objects Section 4.2. Function Literal Section 4.3. Invocation Section 4.4. Arguments Section 4.5. Return Section 4.6. Exceptions Section 4.7. Augmenting Types Section 4.8. Recursion Section 4.9. Scope Section 4.10. Closure Section 4.11. Callbacks Section 4.12. Module Section 4.13. Cascade Section 4.14. Curry Section 4.15. Memoization Chapter 5. Inheritance Section 5.1. Pseudoclassical Section 5.2. Object Specifiers Section 5.3. Prototypal Section 5.4. Functional Section 5.5. Parts Chapter 6. Arrays Section 6.1. Array Literals Section 6.2. Length Section 6.3. Delete Section 6.4. Enumeration Section 6.5. Confusion Section 6.6. Methods Section 6.7. Dimensions Chapter 7. Regular Expressions Section 7.1. An Example Section 7.2. Construction Section 7.3. Elements Chapter 8. Methods Chapter 9. Style Chapter 10. Beautiful Features Appendix A. Awful Parts Section A.1. Global Variables Section A.2. Scope Section A.3. Semicolon Insertion Section A.4. Reserved Words Section A.5. Unicode Section A.6. typeof Section A.7. parseInt Section A.8. + Section A.9. Floating Point Section A.10. NaN Section A.11. Phony Arrays Section A.12. Falsy Values Section A.13. hasOwnProperty Section A.14. Object Appendix B. Bad Parts Section B.1. == Section B.2. with Statement Section B.3. eval Section B.4. continue Statement Section B.5. switch Fall Through Section B.6. Block-less Statements Section B.7. ++ -- Section B.8. Bitwise Operators Section B.9. The function Statement Versus the function Expression Section B.10. Typed Wrappers Section B.11. new Section B.12. void Appendix C. JSLint Section C.1. Undefined Variables and Functions Section C.2. Members Section C.3. Options Section C.4. Semicolon Section C.5. Line Breaking Section C.6. Comma Section C.7. Required Blocks Section C.8. Forbidden Blocks Section C.9. Expression Statements Section C.10. for in Statement Section C.11. switch Statement Section C.12. var Statement Section C.13. with Statement Section C.14. = Section C.15. == and != Section C.16. Labels Section C.17. Unreachable Code Section C.18. Confusing Pluses and Minuses Section C.19. ++ and -- Section C.20. Bitwise Operators Section C.21. eval Is Evil Section C.22. void Section C.23. Regular Expressions Section C.24. Constructors and new Section C.25. Not Looked For Section C.26. HTML Section C.27. JSON Section C.28. Report Appendix D. Syntax Diagrams Appendix E. JSON Section E.1. JSON Syntax Section E.2. Using JSON Securely Section E.3. A JSON Parser Colophon
### 回答1: "JavaScript语言精粹"是一本由Douglas Crockford撰写的著名图书,是许多JavaScript开发者学习与掌握该语言不可或缺的重要资源。 这本书主要关注于JavaScript的核心概念和最佳实践,帮助开发者摆脱一些语言的怪异之处和陷阱,使其能够更加高效地编写可维护和可扩展的代码。 "JavaScript语言精粹"一书将JavaScript的精华提炼为19个章节,每一章节都深入浅出地介绍了一个关键概念,包括函数、对象、数组、代码风格、错误处理等。作者以清晰简洁的语言解释了这些概念的背后原理,并给出了许多实用的代码示例。 这本书不仅适合JavaScript初学者,对于有一定经验的开发者来说也是一本不可多得的参考书。通过阅读它,开发者可以拓宽对JavaScript的理解和认识,提高代码质量和效率。 除了对基础概念的详细介绍外,"JavaScript语言精粹"还包含了一些进阶话题,如闭包、原型链、模块化等,帮助开发者进一步提升其JavaScript编程能力。 总之,"JavaScript语言精粹"是一本权威而实用的JavaScript学习资源,对于想要深入理解和掌握该语言的人来说是极为重要的一本书籍。无论你是初学者还是有经验的开发者,这本书都能帮助你写出更优雅、可读性更高的JavaScript代码。 ### 回答2: 《JavaScript语言精粹》是一本由Douglas Crockford撰写的权威指南,它介绍了JavaScript语言最重要和最有用的部分。该书通过简洁而清晰的语言讲解了JavaScript的核心概念和特性,为开发者提供了深入理解和运用JavaScript的方法和技巧。 这本书以独特的方式展现了JavaScript的精华,将复杂的语法和概念简化成易于理解和运用的形式。Crockford首先介绍了JavaScript的基本语法和数据类型,然后深入讲解了函数、对象、原型、闭包等重要概念。他通过具体的示例和练习,引导读者掌握JavaScript的核心概念和编程技巧。 《JavaScript语言精粹》还包含了对常见错误和陷阱的警示,帮助读者避免在编写JavaScript代码时常见的问题。此外,该书还提供了一些最佳实践和编码规范,帮助开发者写出高质量、可维护的JavaScript代码。 与其他JavaScript教程不同,《JavaScript语言精粹》不仅关注如何正确地使用JavaScript,还强调了一些可以帮助开发者避免错误和提高代码质量的技巧和原则。这使得这本书成为了一本适合初学者和有经验的开发者阅读的权威指南。 总之,《JavaScript语言精粹》是一本深入而全面地介绍JavaScript语言的书籍。无论你是初学者还是有经验的开发者,阅读这本书都可以帮助你建立起对JavaScript的深入理解,并提高你的JavaScript编程技巧。 ### 回答3: 《JavaScript语言精粹》是一本由Douglas Crockford所著的程序设计相关书籍,它主要介绍了JavaScript语言的核心概念和重要知识点。这本书在程序设计领域有着很高的声誉,被许多程序员视为JavaScript编程的经典参考书。 该书的目的是帮助读者深入理解JavaScript语言的精华部分,将复杂的语法和特性解释得简单易懂。它详细介绍了JavaScript的基本数据类型、函数、对象、原型链以及闭包等重要概念,并提供了一些实用的编程技巧和最佳实践。读者通过学习这些内容,可以更好地理解JavaScript的设计哲学和编程范式。 《JavaScript语言精粹》的内容不仅限于语法的讲解,还包括了一些关于代码风格、错误处理和性能优化等方面的建议。它强调代码的可读性、可维护性和可扩展性,帮助读者编写出高质量的JavaScript代码。 这本书的另一个亮点是作者Douglas Crockford的独特见解和深入思考。他不仅仅是介绍了JavaScript的特性,还对其设计和演变进行了深入的分析和比较。他提出了一些有关编程规范和标准化的建议,为读者在实际开发避免一些常见的陷阱和错误提供了宝贵的经验。 总之,《JavaScript语言精粹》是一本经典的JavaScript编程参考书籍,适合有一定编程基础的读者阅读。它能够帮助读者深入理解JavaScript的核心概念和设计原理,提高编程技巧,写出高质量的代码。无论是初学者还是有经验的开发者,都会从这本书获益匪浅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值