《javascript语言精粹》读书笔记 Item1 精华与语法

第一章 精华

任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多。但javascript的流行却不受他的质量影响。

javascript为何如此流行?因为他是web浏览器的语言,所有浏览器都识别他。他与浏览器的结合自然成为了世界上最流行的语言之一。

javascript建立在一些非常好的想法和少数非常坏的想法之上。非常好的想法包括函数、弱类型、动态对象(这个还没理解)和富有表现力的对象字面量表示法;坏的想法包括基于全局变量的编程模型(所有编译单元的所有顶级变量被撮合到一个被称为全局对象的公共命名空间中)。

第二章 语法

2.1 空白

主要讲了何时可以用空白,书中不建议用/* */注释,尽量用//注释。比如:

/*
var rm_a=/a*/.match(s);
*/

这样会导致语法错误

2.2 标识符

保留字也不能用在对象字面量中或命名一个属性。

2.3 数字

(1) javascript只有单一的数字类型,所以1和1.0的值相同。与其他大多数编程语言不同的是,

它没有分离出整数类型,所以1和1.0的值相同。

(2)100和1e2是相同的数字。

(3)值Infinity表示所有大于1.79769313486231570e+308的数(即正无穷大)

(4)JavaScript有一个对象Math,它包含一套作用于数字的方法。

(5) 6种值会为假(==false),分别是false, null, undefined, ” ,0, NaN

2.4 字符串

(1)所有字符都是16位的,可以用单引号和双引号创建一个字符串。没有字符类型。

(2)”A”=”\u0041”,\u允许指定用数字表示字符码位

(3)字符串是不可变的。一旦字符串被创建,就永远无法改变它。但可以通过+运算符连接其他字符串来

创建一个新字符串。两个包含着完全相同的字符且字符顺序也相同的字符串被认为是相同(===)的字符串。

2.5 语句

(1) 在web浏览器中,每个< script>标签都提供一个被编译并可立即执行的编译单元。因为缺少链接器,javascript把它们一起抛入一个公共的全局名字空间中。

(2)javascript的代码块不会创建一个新的作用域。当var语句被用在函数内部时,它定义的是这个函数的私有变量。(最佳实践:定义任何变量都使用var)

(3)for in语句会枚举一个对象的所有属性名(键名)。通常需要检测object.hasOwnProperty(variable)来确定这个属性名是该对象的成员,还是来自于原型链。

2.6 表达式

(1)typeof运算符产生的值有 ‘number’,’string’,’boolean’,’undefined’,’function’,’object’ 6种。如果一个运算数是一个数组或null,那么结果是’object’,这是不对的。

(2)&& 的用法:如果第一个运算数的值是假,那么结果是第一个运算数的值。否则产生第二个运算数的值。如,可利用&&运算符避免检索undefined引起的异常

flight.equipment          //undefined
flight.equipment.model    //throw"TypeError"
flight.equipment && flight.equipment.model     //undefined

(3)|| 用法:如果第一个运算数的值是真,那么结果是第一个运算数的值。否则产生第二个运算数的值。|| 运算符可以用来填充默认值:

var status = flight.status || "unknow";

版权声明:本文为小平果原创文章,转载请注明:http://blog.csdn.net/i10630226