看了一天《JavaScript权威指南》,略做记录。

第一部分 JavaScript 语言核心
第2章 词法结构
2.1 字符集
2.2 注释
2.3 直接量
2.4 标识符和保留字
2.5 可选的分号

第3章 类型、值和变量
3.1 数字
3.2 文本
3.3 布尔值
3.4 null和undefined
3.5 全局对象
3.6 包装对象
3.7 不可变的原始值和可变的对象引用
3.8 类型转换
3.9 变量声明
3.10 变量作用域

第4章 表达式和运算符
4.1 原始表达式
4.2 对象和数组的初始化表达式
4.3 函数定义表达式
4.4 属性访问表达式
4.5 调用表达式
4.6 对象创建表达式
4.7 运算符概述
4.8 算术表达式
4.9 关系表达式
4.10 逻辑表达式
4.11 赋值表达式
4.12 表达式计算
4.13 其他运算符

第5章 语句
5.1 表达式语句
5.2 复合语句和空语句
5.3 声明语句
5.4 条件语句
5.5 循环
5.6 跳转
5.7 其他语句类型
5.8 JavaScript语句小结

 

        我现在感觉所有语言的基础都差不多,差异的东西不是特别多,但是往往这些差异的地方又记不住,所以语言学的越多,感觉越混乱。其次,语言的学习更多的在于库或者模块的调用,明确的知道一个语言能做什么,不方便做什么,比记忆细致的语法点更有意义,毕竟,现在谷歌百度还是很方便的。

         注释有两种://和/*...*/,我见过的注释还有#,/**...*/除此之外再无其他。

         变量名,使用英文字母百分之百是不会错的,当然,你不能使用保留字。大小写敏感我只在html中见过不敏感,其他你都当他是敏感的就好了,不用大小写来区分就ok。

         js是无类型的,所有变量都用var,当然,他区分的类型有数字,字符串,布尔,类就不说了。数字不区分×××和浮点型,有无穷大和Nan的概念 。字符串和字符不区分,可使用双引号和单引号,甚至3引号,不过这本书里面没提。自动类型转换要比java,c之类的复杂,或者说更灵活。null和undefined,undefined算是新东西,没见过,主要是未定义的意思。最后,变量作用域和静态语言有很大的区别,它是函数作用域,但是我还没看到怎么申明类,函数作用域的意思主要差别在于你可以吧所有定义在函数块内的变量认为是定义在函数块的首行。

         表达式,唯一需要注意的是函数声明,应该可以叫做lamda表达式,这个更像是我们在数学中使用的。各种运算符我感觉和c/c++中还是相似度极高的。最容易混淆的应该是==和===,这两个的主要区别是===是恒等,==涉及更多灵活的类型转换。其他一些运算符可能就比较偏了,比如in, instanceof(类似java中的),typeof,delete(这个和c++中完全不同),void(这个和普通意义上也有差别).

        语句没有什么可以说的,基本c/c++没有区别,几个特殊的好像我现在也不用。with, use strict, debugger.

        现在看语言规范看的都有些头疼,感觉都差不多,我或许该看看编译原理了。

        最后,超两份表格于此,算了,还要整理格式,就这样吧。