JavaScript 精粹读书笔记(1,2)(2)


<html>
<body>
<pre>
<script src="https://www.jb51.net/program.js"></script>
</pre>
</body>
</html>


接下来,在同一个文件夹内,创建一个脚本文件,可以命名为program.js:
document.writeln('Hello, world!');
下一步,用你的浏览器找开你的HTML文件去查看结果。本书贯彻始终都会用到一个method方法去定义新方法。下面是它的定义:

复制代码 代码如下:


Function.prototype.method=function(name,func){
this.prototype[name]=func;
return this;
}


我会在第4章解释它。
第2章 语法
本章介绍JavaScript的精华部分的语法,并简要地概述其语言结构。
2.1 空白
空白可能表现为格式化字符或注释的形式。空白通常没有意义,但是偶尔须要用它来分隔字符序列,否则它们就会被合并成一个单一的符号。例如,对如下代码来说:
var that = this;
var和that之间的空格是不能被移除的,但是其他的空格都可以被移除。
JavaScript提供两种注释形式,一种是用/* */包围的块注释,另一种是以//为开头的行注释。注释应该被充分地用来提高程序的可读性。必须注意的是,注释一定要精确地描述代码。没有用的注释比没有注释更糟糕。
用/* */包围的块注释形式来自于一门叫PL/I(默然说话:Programming Language One的简写。当中的“I”其实是罗马数字的“一”,它是一种IBM公司在19世纪50年代发明的第三代高级编程语言)的语言。在JavaScript中,*/可能出现在正则表达式字面上,所以块注释对于被注释的代码块来说是不安全的。例如:
/*
var rm_a = /a*/.match(s);
*/
导致了一个语法错误。所以,我建议避免使用/* */注释,而用//注释代替它。
2.2 标识符
标识符由一个字母开头,其后可选择性地加上一个或多个字母数字或下划线。标识符不能使用下面这些保留字:
abstract
boolean break byte
case catch char class const continue
debugger default delete do double
else enum export extends
false final finally float for function
goto
if implements import in instanceof int interface
long
native new null
package private protected public
return
short static super switch synchronized
this throw throws transient true try typeof
var volatile void
while with
在这个列表中的大部分保留字尚未用在这门语言中。这个列表不包括一些本应该被保留而没有保留的字,诸如undefined、NaN和Infinity。JavaScript不允许使用保留字来命名变量或参数。更糟糕的是,JavaScript不允许在对象字面量中,或者在一个属性存取表达式的点号之后,使用保留字作为对象的属性名。
标识符被用于语句、变量、参数、属性名、运算符和标记。
2.3 数字
JavaScript只有一个单一的数字类型。它在内部被表示为64位的浮点数,和Java的double一样。在JavaScript中,1和1.0是相同的值。
如果一个数字字面量有指数部分,那么这个字面量的值是由e之前的部分乘以10的e之后部分的次方计算出来的。所以100和1e2是相同的数字。
负数可以用前缀运算符-来构成。
值NaN是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它自己。你可以用函数isNaN(number)检测NaN。
值Infinity表示所有大于1.79769313486231570e+308的值。
数字拥有方法(参见第8章)。JavaScript有一个对象Math,它包含一套作用于数字的方法。例如,可以用Math.floor(number)方法将一个数字转换成一个整数。
2.4 字符串
字符串字面量可以被包围在单引号或双引号中,它可能包含0个或多个字符。\是转义字符。JavaScript在被创建的时候,Unicode是一个16位的字符集,所以JavaScript中的所有字符都是16位的。
JavaScript没有字符类型。要表示一个字符,只须创建仅包含一个字符的字符串即可。
转义字符允许把那些正常情况下不被允许的字符插入到字符串中,比如反斜线、引号和控制字符。\u约定允许指定用数字表示的字符码位。
“A”===”\u0041”
字符串有一个ength属性。例如,”seven”.length是5。
字符串是不可变的。一旦字符串被创建,就永远无法改变它。但通过+运算符去连接其他的字符串从而得到一个新字符串是很容易的。两个包含着完全相同的字符且字符顺序也相同的字符串被认为是相同的字符串。所以:
‘c'+'a'+'t' === ‘cat'
是true。
字符串有一些方法(参见第8章)。
2.5 语句
一个编译单元包含一组可执行的语句。在web浏览器中,每个<script>标签都提供一个被编译且立即执行的编译单元。因为缺少链接器,JavaScript把它们一起抛入一个公共的全局命名空间中。附录A有更多关于全局变量的内容。
当var语句被用在函数的内部时,它定义了这个函数的私有变量。
switch、while、for和do语句允许有一个可选的前置标签(label),它配合break语句来使用。
语句往往按照从上到下的顺序被执行。JavaScript可以通过条件语句(if和switch)、循环语句(while、for和do)、强制跳转语句(break、return和throw)和函数调用来改变这个执行序列。
代码块是包在一对花括号中的一组语句。不像许多其他的语言,JavaScript中的代码块不会创建一个新的作用域,因此变量应该被定义在函数的顶端,而不是在代码块中。
if语句根据表达式的值改变程序的控制流程。如果表达式的值为真,那么执行then代码块,否则,执行可选的else分支。
下面列出的值被当作假:
fase
null
undefined
数字0
数字NaN
其他所有的值都被当作真,包括true,字符串”false”,以及所有的对象。
switch语句执行一个多路分支。它把其表达式的值和所有指定的case条件进行匹配。其表达式可能产生一个数字或字符串。当找到一个精确的匹配时,执行匹配的case从句中的语句。如果没有找到任何匹配,则执行可选的default语句。
一个case从句包含一个或多个case表达式。case表达式不一定必须是常量。为了防止继续执行下一个case,case语句后应该跟随一上强制跳转语句。你可以用break语句去退出一个switch语句。
while语句执行一个简单的循环。如果表达式值为假,那么循环将终止。而当表达式值为真时,代码块将被执行。
for语句是一个结构更复杂的循环语句。它有两种形式。
常见的形式由三个可选从句控制:初始化从句(initialization)、条件从句(condition)和增量从句(increment)。首先,;初始化从句被执行,它的作用通常是初始化循环变量。接着计算条件从句的值。典型的情况是它根据一个完成条件检测循环变量。如果条件从句被省略掉,则假定返回的条件是真。如果条件从句的值为假,那么循环将终止。否则,执行代码块,然后执行增量从句,接着循环会重复执行条件从句。
另一种形式(被称为for in语句)会枚举一个对象的所有属性名(或键名)。在每次循环中,对象的另一个属性名字符串被赋值给for和in之间的变量。
通常你须通过检测object.hasOwnProperty(variable)来确定这个属性名就是该对象的成员,还是从其原型链里找到的。

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdspdy.html