《JavaScript核心概念及实践》——导读


screenshot


**
前言
**
大概很少有程序设计语言可以担当得起“优美”这两个字,我们可以评价一种语言语法简洁、代码可读性强(尽管这一点主要依赖于开发人员的水平,而非语言本身)、富有表达力等,但是几乎不会说哪种语言是优美的,而JavaScript则是一个例外。

程序设计语言,主要可以分为两种。一种是我们平时接触较多的,工业级的程序设计语言,如C/C++、Java、Object Pascal(DELPHI)等,从本质上来讲,这些语言是基于程序存储原理,即冯·诺依曼体系的,一般叫做命令式编程语言。而另一种,是根据阿隆左·丘奇的lambda演算而产生的,如Lisp、Scheme,被称为函数式编程语言。这两个体系一般情况下是互不干涉,泾渭分明的。这一现象直到JavaScript的逐渐成熟之后才被打破。函数式语言被认为是晦涩难懂的、学院派的,使用Lisp的似乎都是些披头散发、满口之乎者也而且性情古怪的大学教授。Emacs,这个被它的爱好者誉为世界上最强大、最好用的编辑器的插件机制,就是基于一个Lisp的方言完成的。Emacs算是函数式语言比较成功的运用案例之一。后来又出现了GIMP,一个Linux平台下的图形图像处理软件,它使用另一个Lisp的方言来进行自己的扩展。看来,函数式编程似乎已经被人们所接受了,然而事实并非如此简单,那种“前缀的操作符”,“函数为一等公民”的理念在短时间内是无法被大多数程序员所接受的,毕竟“数据结构+算法 = 程序” 之类箴言已经非常深入人心,而且被证明是一种行之有效的编程范式——直到JavaScript的出现。

JavaScript被称为具有C的语法的Lisp,它完美地结合了这两个体系。C的语法使得它迅速被习惯命令式编程的程序员所接受,从而得到了推广,而Lisp的内核则使得其代码以优美的形式和内涵超过了其他的命令式语言,成为非常流行的一门语言。根据TIOBE的编程语言排行统计,JavaScript一直排在前十位(在第8与第9之间徘徊)。然而,要转变长时间形成的编程习惯绝非易事,两个体系之间的一些理念具有根本性的差异,解决这个问题正是本书的一个目的,通过深入学习JavaScript的内核思想,我们可以将另一个体系的思想应用在日常的工作中,提高代码的质量。

而正是由于它与“主流”编程语言的“相似性”以及其强大的表达力,开发人员很容易写出可以工作的代码,但是诸如函数、闭包、作用域、原型链等机制在JavaScript都与其他语言大相径庭,因此本书希望通过详细讨论这些概念,帮助读者对JavaScript这些核心概念的理解。

JavaScript并不像它表现出来的那样简单,大多数JavaScript程序员在无需深入理解JavaScript运行机制的情况下也可以写出可运行的代码,但是这样的代码几乎没有可维护性,当出现了一个隐藏的较深的bug的情况下,程序员往往无法很快定位错误可能的源头,从而花费大量的时间来进行alert调试。因此,理解JavaScript运行机制,以及澄清其容易被误解的特性将有助于杜绝这种现象。

另一方面,JavaScript作为一门脚本语言在早期并没有得到足够的重视,而且由于最初的JavaScript仅仅运行在浏览器端,可以访问的资源非常有限。但是随着Web的快速发展,开发人员开始将JavaScript运行在其他平台,并引入丰富的库做支持,这使得JavaScript成为了一个“全能”的编程语言。因此书中花费了很大的篇幅来讨论JavaScript在其他环境中的使用(如在Java应用中使用JavaScript完成脚本化,在C应用中使用SpiderMonkey等)。随着JavaScript代码的规模的增加,模块化及代码质量等问题也渐渐浮现,因此书中特别关注使用JavaScript框架(backbone.js)来管理规模,用测试框架(QUnit、Jasmine)完成自动化测试等。

事实上,JavaScript是一种非常依赖于框架的编程语言,框架在很大程度上影响了JavaScript开发人员的编程习惯和编程风格,比如使用jQuery框架的开发人员更关注函数式编程,而Backbone.js的使用者可能更着重在MVC及面向对象编程。

目录

**[第1章 概述
1.1 JavaScript简史](https://yq.aliyun.com/articles/97471)**
1.1.1 动态网页
1.1.2 浏览器之战
1.2 JavaScript语言特性
1.2.1 动态性
1.2.2 弱类型
1.2.3 面向对象
1.2.4 解释与编译
1.3 JavaScript应用范围
1.3.1 客户端JavaScript
1.3.2 服务器端JavaScript
1.3.3 其他应用中的JavaScript
**[第2章 基本概念
2.1 数据类型](https://yq.aliyun.com/articles/97488)**
2.1.1 数据类型
2.1.2 对象类型
2.1.3 基本类型与对象间的转换
2.1.4 类型的判断
2.2 变量
2.2.1 基本类型和引用类型
2.2.2 变量的作用域
2.3 运算符
2.3.1 中括号运算符([])
2.3.2 点运算符(.)
2.3.3 相等与等同运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值