在这里整理一下,每条对应的提示

第1条:了解使用的js版本

  1. 确定应用程序支持的js的版本(浏览器也是应用程序噢)
  2. 确保使用的js特性是应用程序支持的(要不写了也运行不了)
  3. 总是在严格模式下编写和测试代码(面向未来编程)
  4. 合并代码时注意不同声明的严格模式(还是用第二种解决方案吧,省心)

第2条:理解JavaScript的浮点数

  1. js的数字都是双精度的浮点数
  2. js的整数仅仅是双精度浮点数的一个子集,不是单独的一个类型
  3. 位运算将数字视为32位的有符号整数
  4. 当心浮点运算的精度问题

第3条:当心隐式的强制转换

  1. 类型错误会被隐式的强制转换隐藏
  2. 运算符+是进行加法运算还是字符串连接操作取决于参数类型。
  3. valueOf强制转换为数字,toString强制转换为字符串
  4. 实现valueOf方法的对象,应该实现一个toString方法返回valueOf方法返回值的字符串表示
  5. 测试一个值是否未定义,应该使用typeof或者直接与undefined比较,不应该使用真值运算

第4条:原始类型优于封闭对象

  1. 当做相等比较时,原始类型的封装对象与其原始值行为不一样。原始值一定等于原始值,封装对象不等于相同的值的封装对象。“mm”==”mm” ;   new String(“mm”) != new String(“mm”)
  2. 获取和设置原始类型的属性会隐式地创建封装对象。每次都会创建一个新的封装对象,所以设置的值不会保留。

第5条:避免对混合类型使用==运算符

  1. 当参数类型不同时,==运算符应用了一套难以理解的隐式强制转换规则。
  2. 使用===运算符,可以避免记住那些强制转换规则,使代码更清晰。
  3. 当比较不同类型的值时,最好显式地进行强制转换,使程序行为更清晰。

第6条:了解分号插入的局限

  1. 仅在“}”标记之前、一行的结束和程序的结束处自动插入分号
  2. 仅在紧接着的标记不能被解析的时候插入分号
  3. 在以(、[、+、-、/字符开头的语句前绝不能省略分号
  4. 当脚本文件进行连接时,在脚本开头加上防御性的分号
  5. 在return、throw、 break 、continue、 ++、 --的参数之前绝不能换行
  6. 分号不能作为for循环的头部或空语句的分隔符而自动插入

第7条:视字符串为16位的代码单元序列

  1. js字符串是由16位的代码单元组成,而不是由Unicode代码点组成。
  2. js使用两个代码单元表示216及其以上的Unicode代码点。这两个代码单元被称为代理对。
  3. 代理对甩开了字符串元素计数,length,charAt,charCodeAt方法及正则表达式模式受到了影响。
  4. 使用第三方的库编写可识别代码点的字符串操作。
  5. 每当使用一个含有字符串操作的库时,都需要查阅该库文档,看好像处理代码点的整个范围。

[Effective JavaScript 笔记] 第1章:让自己习惯javascript小结的更多相关文章

  1. 《Effective C++》第1章 让自己习惯C++-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  2. JavaScript笔记(第一章,第二章)

    JavaScript笔记(第一章,第二章) 第一章: <meta http-equiv="Content-Type" content="text/html; cha ...

  3. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  4. [Effective JavaScript 笔记]第7章:并发--个人总结

    前言 这一章的内容学到了事件队列和异步的API.js只是运行在其他应用程序的脚本语言.js即依赖于应用程序,也独立与应用程序.可以使它可以在多平台,多种环境上运行.ECMAScript标准中没有关于并 ...

  5. [Effective JavaScript 笔记]第2章:变量作用域--个人总结

    前言 第二章主要讲解各种变量作用域,通过这章的学习,接触到了很多之前没有接触过的东西,比如不经常用到的eval,命名函数表达式,with语句块等,下面是一个列表,我对各节的一点点个人总结,很多都是自己 ...

  6. [Effective JavaScript 笔记]第4章:对象和原型--个人总结

    前言 对象是js中的基本数据结构.对象在js语言编码中也随处可见,比如经常会用到的函数,也是一个Function构造函数,Function.prototype原型对象.每当声明一个函数时,都会继承Fu ...

  7. [Effective JavaScript 笔记]第5章:数组和字典--个人总结

    前言 这节里其实一直都在讨论对象这个在js中的万能的数据结构.对象可以表式为多种的形式,表示为字典和数组之间的区别.更多的我觉得这章讨论多的是一些对应实现功能的相关操作,有可能出现的bug以及如何避免 ...

  8. [Effective JavaScript 笔记]第6章:库和API设计--个人总结

    前言 又到了一章的总结,这章里的内容.是把我从一个代码的使用者,如何换位成一个代码的编写者.如何让别人用自己的代码更容易,不用去注意太多的无用细节,不用记住冗长的函数名.在使用API时怎样避免使用者会 ...

  9. 《Effective C++》第5章 实现-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

随机推荐

  1. zoeDylan.ImgChange 图片切换插件

    墨芈深夜发布插件——图片切换 附上下载地址:http://pan.baidu.com/s/17kKF3共享天地/[墨芈 插件]zoeDylan Plugins Code JS (function ($ ...

  2. ThinkPHP之项目搭建

    前言 在做javaweb开发时,我们创建一个项目,MyEclipse会自动为我们生成相应的目录结构,我们在此结构上才进行web开发,在使用TinkPHP框架做PHP开发时,一样,我们如何生成一个标准的 ...

  3. 19.C#逐一介绍IEnumerable和IEnumerable<T>中的扩展方法(10.3-10.5)

    今天没有太多的言语,只有代码,扩展方法多得太多,不能一一列完,书中一些,看多了也就会使用了. //Enumerable.Range 返回起始到结束范围,是一个Enumrable<int>类 ...

  4. 关于1Byte 1K 1M 1G(换算)

    1个字节等于8位二进制 .... 1byte=8bit 1K = 1024 byte =1024byte*8b 说白一点就是 1M等于1024个K组成,而1K又等于1024B,所以1M等于1024K乘 ...

  5. 6、面向对象以及winform的简单运用(抽象基类与接口)

    抽象类与抽象方法 1.书写规范: 在类前面加上abstract关键字,就成为了抽象类:在一个方法前面加上abstract关键字,就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号) 例: ab ...

  6. Javascript基础系列之(六)循环语句(do while循环)

    do/while 循环是 while 循环的变体.该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环. 语法结构如下 do { statement } while ...

  7. [代码片段]javascript检查图片大小和格式

    function checkImgType(input) { var this_ = document.getElementsByName('imgFile')[0]; var filepath = ...

  8. WRONGTYPE Operation against a key holding the wrong kind of value

    今天改动代码,一运行就跑错了,错误原因: 因为redis中已经存在了相同的key, 而且key对应的值类型并不是Set,而是SortSet(改动前):再调用smembers时,抛出此错误. 解决方法: ...

  9. linux用终端上传文件和文件家到远程的服务器

    文件上传:scp 本地文件地址 root@aifei8.net:/var/www/html/landrover 文件夹上传:1.先进入文件夹目录 2. 执行命令:scp -r . root@aifei ...

  10. android文件上传到服务器

    package uploadDemo; import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStre ...