第二章 语法结构

2.1 字符集

  什么是字符集?各种字符集什么关系?unicode,utf-8是什么关系?

  字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Characterset)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。http://baike.sogou.com/v291629.htm

  各种字符集的出现时为了满足不同地区,不同语言,不同环境的使用。

  http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html这个连接详细写了字符集和字符编码方式。

Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案。

2.11 大小写

  前端中,html是不区分大小写的,但是js是区分大小写的,也就是说,关键字,变量,函数名和所有的标识符都必须采用一致的大小写形式。

2.12 空格,换行符和格式控制符

  token:前几节课snl汇报的时候说到token当时第一次听说,后来查了一下,暂时理解为一种口令式的字符串。常用于session验证或者其他的验证,就是附加在主要信息的一段字符,达到验证的目的。

  js中会自动忽略所有的空格和换行,这样编码的时候可以缩进。

2.13 unicode转义序列

  

  在有些计算机硬件和软件里,无法显示或输入Unicode字符全集。为了支持那些使用老旧技术的程序员,JavaScript定义了一种特殊序列,使用6个ASCII字符来代表任意16位Unicode内码。这些Unicode转义序列均以\u为前缀,其后跟随4个十六进制数(使用数字以及大写或小写的字母A~F表示)。这种Unicode转义写法可以用在JavaScript字符串直接量、正则表达式直接量和标识符中(关键字除外)。例如,字符é的Unicode转义写法为\u00E9,如下两个JavaScript字符串是完全一样的:

"café" === "caf\u00e9" // => true 

  Unicode转义写法也可以出现在注释中,但由于JavaScript会将注释忽略,它们只是被当成上下文中的ASCII字符处理,而且并不会被解析为其对应的Unicode字符。

2.2 注释

  JavaScript支持两种格式的注释。在行尾“//”之后的文本都会被JavaScript当做注释忽略掉的。此外,“/*”和“*/”之间的文本也会当做注释,这种注释可以跨行书写,但不能有嵌套的注释。

  

var a = null;//a是变量

var a = null;
/*
a是变量
*/

  养成良好的注释习惯是一个程序员必备的素质之一,单行注释前边空格,多行变量开始行和结束行没有注释内容,中间每注释一条都以*开头,切注意缩进。如下

/*
* a是变量
*/

2.3 直接量

  所谓直接量,就是在程序中直接使用的数据值,包括数字、字符串、布尔值、表达式,数组和对象等。http://www.cnblogs.com/coolicer/archive/2010/10/14/1851173.html

2.4 标识符和保留字

  在JavaScript中,标识符用来对变量和函数进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。JavaScript标识符必须以字母、下划线(_),$开头,后续可以是字母、数字、$、_,(数字是不允许作为首字母出现的,以便于区分数字和标识符)

  出于可移植性和易于书写的考虑,通常我们只使用ASCII字母和数字来书写标识符。然而需要注意的是,JavaScript允许标识符中出现Unicode字符全集中的字母和数字。(从技术上讲,ECMAScript标准也允许在标识符的首字符后面出现Unicode字符集中的Mn类、Mc类和Pc类译注7)。由此,程序员也可以使用非英语语言或数学符号来书写标识符:

var sí = true;
var π = 3.14;

  保留字。JavaScript把一些标识符拿出来用做自己的关键字。因此,就不能再在程序中把这些关键字用做标识符了:

break   delete  function    return  typeof
case do if switch var
catch else in this void
continue false instanceof throw while
debugger finally new true with
default for null try

这里面值得注意的是:this,用_this代替,new,do,continue,delete,debugger等容易出错。直接定义会报错:Unexpected token

http://book.51cto.com/art/201206/343060.htm关于其他的保留字介绍。

2.5 可选的分号

  js中分号是可以省略的,解析的时候会自动填补。换行读取解析的原则是:如果当前语句和随后的非空格字符不能当成一个整体来解析的话,JavaScript就在当前语句行结束处填补分号。

  下面几个特殊注意的:

  1,如果一条语句以“(”、“[”、“/”、“+”或“-”开始,那么它极有可能和前一条语句合在一起解析。以“/”、“+”和“-”开始的语句并不常见,而以“(”和“[”开始的语句则非常常见,至少在一些JavaScript编码风格中是很普遍的。有些程序员喜欢保守地在语句前加上一个分号,这样哪怕之前的语句被修改了、分号被误删除了,当前语句还是会正确地解析

  2,两个例外:

   第一个例外是在涉及return、break和continue语句(参见第5章)的场景中。如果这三个关键字后紧跟着换行,JavaScript则会在换行处填补分号。例如,这段代码:

    1.   return
    2.   true;

  

   第二个例外是在涉及“++”和“--”运算符(见4.8节)的时候。这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同时“++”或“--”将会作为下一行代码的前缀操作符并与之一起解析,例如,这段代码:

    1.   x
    2.   ++
    3.   y

   这段代码将解析为“x; ++y”,而不是“x++; y”。

javascript权威指南第六版学习的更多相关文章

  1. 《JavaScript权威指南 第六版 中文版》(一)

    <JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...

  2. javascript权威指南第6版学习笔记

    javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console ...

  3. [在读] javascript权威指南第六版

    耽搁了有大半年没看,记得当时看到5分之2了吧.权威指南是不管读几遍都能觉得有新收获的书^^

  4. JS 语言核心(JavaScript权威指南第六版)(阅读笔记)

    前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思 ...

  5. JavaScript权威指南第六版(阅读笔记)

    前言: 对于软件行业学习是无止境的,因为知识更替非常快,能够快速稳固掌握一门新技术是一个程序员应该具备的基本素质. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢 ...

  6. Note | Javascript权威指南[第六版] 第1章:Javascript概述

       JavaScript是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.JavaScript的语法源自Java,它的一等函数(first-class function)来 ...

  7. Note | javascript权威指南[第六版] 第2章:词法结构

      语法结构规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分隔等规则.本章用很短的篇幅来介绍JavaScript的词法结构.   2.1.字符集   JavaScript程序是用Unic ...

  8. 第六章 对象-javaScript权威指南第六版(三)

    6.3 删除内容 delete运算符可以删除对象的属性. delete运算符只能删除自有属性,不能删除继承属性. delete表达式删除成功或没有任何副作用时,它返回true. 6.4 检测属性 用i ...

  9. 第六章 对象-javaScript权威指南第六版

    什么是对象? 对象是一种复合值,每一个属性都是都是一个名/值对.原型式继承是javaScript的核心特征. 对象常见的用法有,create\set\query\delete\test\enumera ...

随机推荐

  1. Javascript 常用系统内置函数

    1:在数组指定位置插入元素 array.splice(2, 0, "three");   //在索引2的位置,删除0个元素后,插入元素“three” 例子: // 原来的数组 va ...

  2. javaSE第二十二天

    第二十二天    312 1:登录注册IO版本案例(掌握)    312 2:数据操作流(操作基本类型数据的流)(理解)    313 (1)定义:    313 (2)流对象名称    313 (3 ...

  3. c#操作xml增删改查

    1.首先新建一个xml文件(Root是我写上的) 2. 3.直接上代码,更直观 (1)初始化xml /// <summary> /// 初始化xml /// </summary> ...

  4. linux下多ISP的策略路由

    http://kerry.blog.51cto.com/172631/385578/ 修改/etc/iproute2/rt_tables 先在 /etc/iproute2/rt_tables 下建兩個 ...

  5. Dockpanel的控件加载问题

    1. 正确加载模式:panel.ControlContainer.Controls.Add(control); 如果用panel.Controls.Add(control);则可能出现模块发生位移问题 ...

  6. Kettle 合并记录报错!

    在Kettle的合并记录过程的时候,在“为了转换解除补丁开始 ”这一步的时候报错.具体错误如图所示: Kettle的转换如图所示: 问题原因:可能是你的数据库链接驱动和Kettle的版本不兼容. 解决 ...

  7. Lua 的函数库 01

    这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1. table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个 ...

  8. int 类型 占多少字节是由什么决定的

    int 类型占据多少字节?到底是跟编译器有关?还是系统来决定的? 1. CPU的设计者才不管你在上面跑什么程序.他们只是按着他们的想法来设计.而int的大小,至少在C/C++中,标准只说可以由实现者自 ...

  9. Laravel 5 基础(五)- 环境与配置

    .env 文件是配置文件,包括数据库配置信息,查看 config->database.php ,connections 里面包含了所有数据库的配置,可以在 default 中选择要使用的数据库. ...

  10. 内存详解--理解 JVM 如何使用 AIX 上的本机内存

    转自---http://www.ibm.com/developerworks/cn/java/j-nativememory-aix/