《JavaScript语言精粹》—— 读书总结
话说这本书还是同学的推荐才读的,之前感觉这本书太薄了,不值得看,没想到小身材有大智慧,书中的内容总结的还是很到位的!所以就把最后几章,精华的部分整理整理。
优美的特性
函数是顶级对象
在JS中,没有块级作用域,都是以函数为最小的作用域,这样就可以把所有的变量放在函数的顶级声明。同时,也需要注意for循环,与java的使用方法就不一样了。即便是在for循环的体内,或者if语句中,声明的变量也是函数级别的。
而函数会延长作用域的范围,也就衍生出闭包这种概念,详细的还应该去参考《JS高级程序设计》,那里面讲的比较详细。
基于原型继承的动态对象
JS中没有像java一样的面向对象,但是可以通过prototype进行继承,不过直接使用prototype,会导致所有的派生对象都共同使用prototype的属性或者方法。因此在写面向对象的代码时,要注意此类问题。
毒瘤
全局变量
在JS中有三种声明变量的方式:
第一种,使用var语句声明:
var foo = value;
第二种,直接给全局对象添加属性
window.foo = value;
第三种,直接使用未声明的变量
foo = value;
自动插入分号
有时候js会自动为我们加入分号,比如:
return
{
status:true
};
有可能被解析成这样:
return ;
{
status : true
};
因此应该保持这种风格:
return {
status:true
};
typeof并不是万能的
检测null,最好的方法
value === null
伪数组
js没有真正的数组,因此不会越界出错。但是检测的时候有些麻烦,最可靠的办法是:
if(Object.prototype.toString.apply(my_value) === '[object Array]'){}
假值
Number : 0 NaN
String : ''
Boolean: false
Object : null
Undefined : undefined
糟粕
==
和!=经常会出现强制转换,再进行比较。因此为了避免出错,比较值时,应该使用=和!==
with
with语句的结果有时,很难预料。
eval
无论是性能,还是处于安全,都不推荐使用
continue
如果去掉它,会发现性能有所提升
switch
case条件可能不会跳出,而继续执行。
缺少块
if(ok)
test1();
test2();
这种代码有时是因为粗心,有时会给别人带来困惑。不知道是想要执行test1(),还是两个都执行。
位运算符
在javascript中,由于并不是像c或者java能接触机器底层,因此位运算也就没有那么高效了。
new
在new的时候,是创建一个继承于运算符后卖弄的对象,然后调用该运算符,把新对象绑定给this。但是如果忘记加new,则会把this绑定到全局对象中,造成污染。
《JavaScript语言精粹》—— 读书总结的更多相关文章
- 高性能MySQL --- 读书笔记(1) - 2016/8/2
此书不但帮助MySQL初学者提高使用技巧,更为有经验的MySQL DBA指出了开发高性能MySQL应用的途径.全书包括14章,内容覆盖MySQL系统架构.设计应用技巧.SQL语句优化.服务器性能调优. ...
- 高性能MySQL --- 读书笔记(2) - 2016/8/2
第1章 MySQL架构 MySQL架构与其他数据库服务器大不相同,这使它能够适应广泛的应用.MySQL足够灵活,能适应高要求架构.例如Web应用,同时还适用于嵌入式应用.数据仓库.内容索引和分发软件. ...
- 高性能mysql读书笔记(一):Schema与数据类型优化
4.5 加快ALTER TABLE 操作的速度 原理: MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题. MySQL 执行大部分修改表结构操作的方法是用新的结构创建一个空表,从旧 ...
- 《高性能MySQL》读书笔记--锁、事务、隔离级别 转
1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进 ...
- 【高性能Mysql 】读书笔记(三)
第5章 创建高性能的索引 本文为<高性能Mysql 第三版>第四章读书笔记,Mysql版本为5.5 索引基础 索引的重要性:找一本800面的书的某一段内容,没有目录也没有页码(页码也可类比 ...
- 【高性能Mysql 】读书笔记(二)
第4章 Schema 与数据类型优化 本文为<高性能Mysql 第三版>第四章读书笔记,Mysql版本为5.5 选择优化的数据类型 选择合适数据类型的三个原则 更小的通常更好 - 速度更快 ...
- 《高性能MySQL》 读书总结
目录: 第一章.MySQL架构与历史 第二章.MySQL基准测试 第三章.服务器性能剖析 第四章.Schema与数据类型优化 第五章.创建高性能的索引 第六章.查询性能优化 第七章.MySQL高级特性 ...
- 【高性能Mysql 】读书笔记(一)
第1章 Mysql架构与历史 MYSQL最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理( Query Processing)及其他系统任务( Server Task)和数据的存储 ...
- 1121高性能MySQL之运行机制
本文来自于拜读<高性能MySQL(第三版)>时的读书笔记作者:安明哲转载时请注明部分内容来自<高性能MySQL(第三版)> MySQL的逻辑构架 MySQL服务器逻辑架构 最上 ...
- 高性能mysql——高性能索引策略
<高性能MySQL>读书笔记 一. 索引的优点 1. 索引可以让服务器快速定位到表的指定位置,大大减少了服务器需要扫描的数量: 2. 最常见的B-Tree索引按照顺序存储数据,可以用来做o ...
随机推荐
- Nginx - Windows下nginx定时分割日志
1.建立批处理脚本,c:\soft\demo.bat @echo off taskkill /F /IM nginx.exe > nul cd C:\soft\nginx-1.11.3 rem ...
- 在CHROME里安装 VIMIUM 插件, 方便操作
VIMIUM 插件使用方法 VIMIUM 命令列表 网页导航 j, :向下滚动网页 k, :向上滚动网页 h : 向左滚动 l : 向右滚动 gg : 滚动到网页头部 G : 滚动到网页底部 :向上翻 ...
- 在Spring中轻松写日志
最近觉得写的一点代码(JAVA),还觉得颇为自得,贡献出来供大家参考. 首先,先上代码: @Controller public class Controller1{ @WriteLog(value = ...
- 向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]
/**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...
- java方法重载(overload)、重写(override);this、super关键简介
一.方法重载: 条件:必须在一个类中,方法名称相同,参数列表不同(包括:数据类型.顺序.个数),典型案例构 造方重载. 注意:与返回值无关 二.方法重写: 条件: (1)继承某个类或实现某接口 (2 ...
- Sqoop2中传入配置文件中url之【坑】
[特别注意]Sqoop2里面各个版本的区别还是很大的,这里使用1.99.6版本. sqoop2的url等信息放到properties配置文件中,配置文件解析出来传给SqoopClient报错. Sqo ...
- Day 1:学习Windows Phone 使用 SQLite
private void move(string fn) { StreamResourceInfo sr = Application.GetResourceStream(new Uri(fn, Uri ...
- ASCII字符集中的功能/控制字符
ASCII字符集中的功能/控制字符 Function/Control Code/Character in ASCII Version: 2011-02-15 Author: gree ...
- Java jvisualvm简要说明
jvisualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisualvm已经被集成在jdk1.6以上的版本中(不是jre).自身运行需要最低jdk1.6版本, ...
- 转载——CSS3 Object-fit和Object-position
在响应式设计(RWD)中,令大家最头痛的问题的是图片的自适应处理问题.往往我采取的处理方式是给图片的容器设置一个尺寸,然后给图片设置下面的代码: img { max-width: 100%; heig ...