记录一下阅读蝴蝶书的笔记,本篇为书中最后一部分:方法、代码风格、优美的特性、毒瘤、糟粕等。

方法

这一章主要介绍了一些方法集。这里写几个我不太熟悉的方法和要点吧。

  • array.join()

    对于IE6/7,使用array.join()连接大量字符串的效率确实优于使用+元素运算符。但是目前主流的浏览器,包括IE8以后的版本,都对+元素运算符连接字符串做了特别优化,性能已经显著高于array.join()

  • number.toExponential(fractionDigits)

    把这个number转换成一个指数形式的字符串。

  • number.toFixed(fractionDigits)

    将这个number转换成一个十进制形式的字符串。

毒瘤

  • 注意全局变量的引入。

  • JavaScript 中 Unicode 是16位的。包含65536个字符(基本多文种平面 Basic Multilingual Plane)。剩下的百万字符中的每一个都可以用一对字符来表示。Unicode 把一对字符视为一个单一的字符,而 JavaScript 认为一对字符是两个不同的字符。

  • 检测null的方式。

console.log(typeof null) //object

myValue === null大专栏  JavaScript 语言精粹笔记3span> //检测 null

if (myValue && typeof myValue === 'object') {
// myValue 是一个对象或数组!
}
  • parseInt 把字符串转化为整数的函数。它遇到非数字时会停止解析,所以parseInt('16')parseInt('16ton')产生相同的结果。

    如果该字符串第一个字符是0,那么该字符串会基于八进制而不是十进制来求职。在八进制中,8和9不是数字,所以parseInt('08')parseInt('09')都产生0作为结果。但parseInt()可以接受基数,因此parseInt('08',10)结果为8,建议总是加上这个基数参数。

  • JavaScript 的对象永远不会是真的空对象,因为它们可以送原型链中取得成员属性。

糟粕

  • 避免使用with语句。

  • 避免使用eval语句。

  • continue可能会降低运算性能。

  • 位运算符在 JavaScript 会非常慢。

    Java 里,位运算符处理的是整数。JavaScript 没有整数类型,它只有双精度的浮点数,因此,位运算符把它们的数字运算数先转换为整数,执行运算,在转换回去。JavaScript 的执行环境一般接触不到硬件,所以非常慢。

  • 避免使用包装对象。new Objectnew Array等。

  • 避免使用void

本系列结束。

JavaScript 语言精粹笔记3的更多相关文章

  1. JavaScript语言精粹笔记

    JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...

  2. JavaScript语言精粹 笔记06 方法

    JS包含了少量可用在标准类型上的标准方法. ArrayFunctionNumberObjectRegExpString Array array.concat(item...) concat方法返回一个 ...

  3. JavaScript语言精粹 笔记05 正则表达式

    正则表达式 正则表达式以方法的形式被用于对字符串中的信息进行查找.替换画图提取操作.可处理正则表达式的方法有:regexp.exec, regexp.test,string.match, string ...

  4. JavaScript语言精粹 笔记04 数组

    数组1 数组字面量2 长度3 删除4 列举5 混淆的地方6 方法7 维度 数组1 数组字面量 var empty = []; var numbers = [ 'zero', 'one', 'two', ...

  5. JavaScript语言精粹 笔记03 继承

    继承伪类对象说明符原型函数化部件 继承 JS不是基于类的,而是基于原型的,这意味着对象直接从其他对象继承. 1 伪类 JS提供了一套丰富的代码重用模式,它可以模拟那些基于类的模式,因为JS实际上没有类 ...

  6. JavaScript语言精粹 笔记02 函数

    函数函数对象函数字面量调用参数返回异常给类型增加方法递归作用域闭包回调模块级联套用记忆   函数 1 函数对象 在JS中函数就是对象.对象是“名/值”对的集合并拥有一个连接到原型对象的隐藏连接.对象字 ...

  7. JavaScript语言精粹 笔记01 语法 对象

    内容比较简单,只是从头梳理一下JS的知识 语法空白标识符数字字符串语句 对象对象字面量检索更新引用原型反射枚举删除减少全局变量污染  语法 1 空白 空白可能表现为格式化字符或注释的形式.空白通常没有 ...

  8. 1.javascript语言精粹笔记

    一.注释 /**/ // 采用这个 二.标识符 标识符被用于语句.变量.参数.属性名.运算符和标记三.数字 javascript只有一个单一的数字模型.它在内部被表示64位的浮点数. 没有分离出整形, ...

  9. javascript语言精粹-笔记

    walkDOM function walkTheDOM(node, func) { func(node); node = node.firstChild; while (node) { walkThe ...

随机推荐

  1. python图像处理:一福变五福

    快过年了,各种互联网产品都出来撒红包.某宝一年一度的“集五福活动”更是成为每年的必备活动之一. 虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹. 毕竟对于如今生活在大城 ...

  2. 第二代网关GateWay搭建流程

    Spring Cloud第二代网关GateWay是由纯Netty开发,底层为Reactor,WebFlux构建,不依赖任何Servlet容器,它不同于Zuul,使用的是异步IO,性能较Zuul提升1. ...

  3. bat脚本修改dns(判断系统版本)

    @echo off systeminfo if "%OS 名称%"=="%7%" goto windows7:windows7echo 正在设置本机主DNS , ...

  4. Matlab高级教程_第三篇:Matlab转码C/C++方式(混编)_第一部分

    0. 其实Matlab的转码混编大多数就是为了现成的算法函数不用再写了,2就是为了方便提高代码运行速度用C语言去运行. 1. MEX文件: Mex文件是一种可在matlab环境中嗲用C语言(或fort ...

  5. 网络安全与CTF在线学习资源网站

    http://www.sec-wiki.com/skill/ 安全技能(里面渗透逆向编程都有介绍) http://blog.knownsec.com/Knownsec_RD_Checklist/ 知道 ...

  6. [LC] 207. Course Schedule

    There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prereq ...

  7. [LC] 348. Design Tic-Tac-Toe

    Design a Tic-tac-toe game that is played between two players on a nx n grid. You may assume the foll ...

  8. mac用python读取文件常见问题(未完成)

    python读取文件常见问题(mac版) 让python的默认编码,和文件的编码保持一致

  9. Normally Distributed|

    6.1Introducing Normally Distributed Variables Why the word “normal”? Because, in the last half of th ...

  10. TCP并发、GIL、锁

    TCP实现并发 #client客户端 import socket client = socket.socket() client.connect(('127.0.0.1',8080)) while T ...