ECMAScript提供了实现通用程序设计任务必须的Javascript的语法,运算符和基本对象.

语法

ECMAScript的基本概念如下:
1. 区分大小写.
2. 变量是弱对象类型的.
3. 每行结尾的分号可有可无.
4.注释与Java, C的注释一样.
5.括号表明代码块.

变量

ECMAScript的变量是用var运算符加变量名定义的. ECMAScript并不要求对所有的变量进行声明. 遇到未声明的变量,ECMAScript用它创建一个全局的变量. 对于声明的变量, 也不会进行初始化.

对于变量的命名需要采用一定的规则(Camel标记法mySecondParameter, Pascal标记法MySecondParameter,匈牙利类型标记法sMySecondParameter).

关键字

ECMAScript有25个关键字. 如果错误使用了关键字,那么会报告 Identifier expected.

保留字

保留字有31个.

原始值和应用值

ECMAScript中, 变量可以存放2种类型的值, 即原始值和引用值.
原始值primitive value, 是存放在stack中的简单数据类型, 也就是说它的值是存放在变量的访问位置的.
引用值reference value, 是存储在堆heap中的对象, 也就是说, 存储在变量处的值是一个指针, 指向存储对象的内存处.

为变量赋值时,ECMAScript必须判断该值是原始类型还是引用类型. 要实现这一点, 解释程序需要判断该值是否为ECMAScript的原始类型之一, 即 Undefined, Null, Boolean, Number 和String . 由于这些原始类型占据的空间是固定的, 所以即可将他们存储在较小的内存区域---stack中.这样便于迅速查找变量的值. (String居然是原始类型!)

如果一个值是引用类型的,那么它的存储空间将从堆中分配. 由于引用值的大小会改变, 所以不能把它放在stack中.否则会降低对变量的查询速度.相反, 放在变量的stack空间的值是该对象在堆中的地址. 地址大小是固定的,所以把它存储在stack中对性能无任何负面影响.

原始类型

对于变量的类型判断, 可以通过typeof进行.(typeof对于null值返回的类型是object, 这实际上是javascript最初实现的一个错误, 然后被ECMAScript沿用了. 现在,null被认为是对象的占位符, 从而解释了着一个矛盾)

  • Undefined. 变量未初始化时,这个变量的默认值是undefined(Undefined类型的字面值). 对于声明,或者未声明的变量, 只要未赋值, 那么其类型都是Undefined的. 另外, 当函数没有明确的返回值时, 返回的值也是undefined.
  • NULL . 只有一个值的类型. 它只有一个字面值null. 值undefined实际上是从值null派生来的, 因此ECMAScript把他们定义为相等的alert(null==undefined). 
  • Boolean. Boolean有两个值 ture  and false. 即使false不等于0 ,0也可在必要时转化为false.
  • Number. 最特殊的类型. 不但可以表示整型, 还可以表示浮点型.Number有几个特殊值, 即 Number.MAX_VALUE和Number. MIN_VALUE. 以及NaN. NaN特殊之处在于它和自己并不相等, 处于这种原因,不推荐使用NaN本身。 而使用isNaN。
  • String. 唯一没有固定大小的原始值。" " 和' ' 都用于声明字符串。

转换

  • 转换为字符串。ECMAScript中, Boolean值, Number和String都是伪对象, 因为这些类型都有属性和方法。比如length和toString().
  • 转换为数字。 parseInt和parseFloat.
  • 强制转化。

引用类型

引用类型通常都叫做class, 遇到引用类型时,处理的都是对象。 对象是由new+要实例话的class创建。

  1. Object类。是所有类的基类。具有Constructor(对创建对象的函数的引用,Object指向object())和Prototype(对该对象原型的引用, 对于所有的类,它默认返回一个Object对象的实例)2个属性 以及HasOwnProperty(property),IsPrototypeof(object),ProertyIsEnumberable(property),ToString(), ValueOf()5个函数。
  2. Boolean类。避免使用。
  3. Number类。toFixed(),toExponential(),toPrecision().避免使用。
  4. String类。l双字节字符的length为1. charAt(),charCodeAt(),concat(),indexOf(),lastIndexOf()
  5. instanceOf返回对象的类型。一般在typeOf返回object之后使用。

运算符

  1. 一元运算符。delete删除对以前对象定义的属性和方法。void对于任何值都返回undefined。++ and --。
  2. 位运算符。~, &,|, ^,<<,>>,>>>.
  3. 布尔运算符。!,&&,||.
  4. ...10

语句

  1. if...else...
  2. do-while, while, for, for-in
  3. label
  4. break, continue
  5. with
  6. switch

函数

ECMAScript无重载,但可以使用arguments对象避开这种限制。