《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绑定到全局对象中,造成污染。

本文转自博客园xingoo的博客,原文链接:《JavaScript语言精粹》—— 读书总结,如需转载请自行联系原博主。
相关文章
|
1月前
|
XML 监控 JavaScript
JavaScript 语言对企业上网监控的技术支持
在数字化企业环境中,上网监控对企业信息安全和提升员工效率至关重要。JavaScript 作为广泛应用的脚本语言,提供了强大的技术支持,包括数据获取与分析、与服务器端交互、监控页面加载时间和网络活动,助力企业有效管理上网行为,保障信息安全。
26 6
|
3月前
|
Web App开发 JavaScript 前端开发
Node.js与Go语言的对比?
【8月更文挑战第4天】Node.js与Go语言的对比?
355 3
|
3月前
|
自然语言处理 JavaScript 前端开发
【走向世界】Vue.js国际化:打造无国界应用,让爱与信息跨越语言的边界!
【8月更文挑战第30天】本文详细介绍了Vue.js中实现国际化的多种方法及最佳实践。通过使用`vue-i18n`等第三方库,开发者能够轻松地为应用添加多语言支持,优化用户体验并扩大市场覆盖范围。文章涵盖从基本配置、动态加载语言包到考虑文化差异等方面的内容,帮助读者构建真正全球化且无缝多语言体验的应用程序。
109 0
|
3月前
|
JavaScript 前端开发 UED
探索JavaScript的历史:网络需求初现、语言创立与标准化的旅程
探索JavaScript的历史:网络需求初现、语言创立与标准化的旅程
|
5月前
|
JavaScript 前端开发 编译器
ECMAScript与JavaScript:一场语言的邂逅
ECMAScript与JavaScript:一场语言的邂逅
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的java语言的考试信息报名系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的java语言的考试信息报名系统附带文章源码部署视频讲解等
53 0
|
6月前
|
JavaScript 前端开发 Java
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
53 0
N..
|
6月前
|
存储 JavaScript 前端开发
JavaScript语言的基本结构
JavaScript语言的基本结构
N..
36 1
|
6月前
|
JSON JavaScript 前端开发
javascript语言ES5版本详解(一)
javascript语言ES5版本详解(一)
|
6月前
|
前端开发 JavaScript 开发者
编程笔记 html5&css&js 064 JavaScript 语言规则
编程笔记 html5&css&js 064 JavaScript 语言规则