取其精华,去其糟粕

蚊子前端博客
发布于 2015-05-17 06:00
基本读完《JavaScript语言精粹》,总结一下这篇文章读后心得

今天差不多读完了《JavaScript语言精粹》,虽然这本书写的比较早,当时还是ES3的标准,不过依然还是有很多借鉴意义的。

有些事情在当时的环境和浏览器的性能下,还是比较流行的,但是现在却是另一种情况了。比如数组转换为字符串,那时候IE6~IE8还比较盛行的时候,更多的是推荐Array.join('')来进行转换,但是现在,更加推荐使用+进行字符串的拼接。

不过说实话,虽然书名是《JavaScript语言精粹》,但是读完后,除了记住js中各种各样的糟糕状况,还真没想起几个精华来。JavaScript作为一个10天就设计出来的语言,承受了超乎想象的流行程度。它一诞生,就在短到令人吃惊的时间里被全世界所接受。它从来没有在实验室里被试用和打磨。当它还非常粗糙时,它就被直接集成到网景的浏览器中。虽然java的小应用程序(java applets)的失败,JavaScript变成了默认的‘web语言’。

不过,JavaScript还是多多少少有其自身的特点的。比如强大的对象字面量,原型继承,强大的数组和字符串操作等。好吧,精华还真想不出什么来,谁让它在目前来说是唯一的一个脚本编程语言呢。

JavaScript的糟粕还是不少的。比如:

1.全局变量:全局变量可以被程序的任何部分在任意时间修改,这些都是不可控的。本来你一直这么使用全局变量的,可是其他人根据他的需要修改了全局变量的值,就会导致你的程序出现Bug。针对这种情况,我们需要尽量地避免使用全局变量,如果非得需要不可的话,我们可以把全局变量放到一个命名空间里,当其他人声明全局变量时,要么使用你的命名空间,要么使用它的命名空间,这样就能尽量地减少全局变量的重复了:

COPYJAVASCRIPT

var Wenzi = Wenzi || {}; Wenzi.WEBBASEURL = 'www.xiabingbao.com'; Wenzi.SERVER_TIME = 1431871979;

2.作用域:JavaScript提供了块级语法,却没有提供块级作用域,在该作用域内声明的变量,在其外部也能够使用。比如:

COPYJAVASCRIPT

for(var i=0; i<10; i++){ } console.log(i); // 输出10

3.自动添加分号:使用JavaScript进行编程,不用担心末尾没有写分号而导致程序不能运行。可是如果没有良好的编程习惯,就会产生很严重的逻辑错误。在下面的代码中,我们本意是要返回一个json结构,可是因为js自动添加了分号,导致返回了一个空。

COPYJAVASCRIPT

return { name:'wenzi' }

4.+的使用+运算符既可以用作拼接字符串,也可用作数字的相加。这个符号产生什么作用,取决于两端的云算数的类型:若两端的云算数都是数字,那么就是两个数的相加;若其中一个为字符串或两个都为字符串,那么就是字符串的拼接;若是其他的类型,那么就将其转换为字符串进行拼接。

...

其实JavaScript中还有相当多的糟粕,目前就暂时总结这几种吧。也可以看看之前总结的【Javascript的严格模式】,在严格模式下,能预防很多低级错误的发生。虽然JavaScript有着这样的不好那样的不好,但是,正是因为它的这些特性,让web的脚本编程更加的丰富。

web前端发展到现在,真是处于百花齐放的盛况:jQuery, augular, node, react等。而且现在还有CMD和AMD规范。

到这里,或许会有人问我,这本书值不值得读,值不值得买。我可以很肯定的说:‘值得买’,但是,不是所有人都需要买。就我目前读完的感觉,这本书比较适合学习6~12个月的学习者购买。若学习javascript时间太短,书里说的那些知识点可能都没有接触到;若学习的时间稍微长一些,比如2年左右的(如本人),购买的价值就下降了,因为书上很多的精华与糟粕,其实在你的项目中早已经接触到了;而且,若你一直使用ES5的严格模式进行开发,就能避免很多潜在的问题。

标签:
阅读(236) 评论(0)

公众号:

qrcode

微信公众号:前端小茶馆