JavaScript(02): ECMAScript基础

ECMAScript提供了实现通用程序设计任务必需的JavaScript的语法、运算符和基本对象。

1. 语法

ECMAScript借用了Java、C等语言的语法,对于熟悉这些语言的开发者掌握ECMAScript的语法应该是非常容易的。

  • 区分大小写
  • 变量是弱类型:定义变量时只用var关键字并且可以将变量初始化为任意值
  • 每行结尾的分号可有可无(一个良好的习惯是总是在语句的末尾加上分号,因为如果没有分号在有的浏览器中可能会无法正确运行)
  • 注释与Java和C语言等相同
  • 括号表示代码块
2.变量
由于是弱类型语言,变量可以存放不同类型的值;但是在使用变量的时候,一个好的习惯是始终存放相同类型的值。
变量命名需要遵守两条简单的规则:
  1. 第一个字符必须是字母、_或$
  2. 余下的字符可以是_、$、数字字符或任何字母
注意:ECMAScript的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值,但是这样做是危险的。良好的编程习惯应当是总是声明所有变量。

3. 关键字和保留字
关键字(keyword)是有特殊含义的单词,是系统保留的不能用做变量名或函数名的特殊符号。
break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、
instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with

保留字(reserved word)是为将来的关键字而保留的单词。
abstract、boolean、byte、char、class、const、debugger、double、enum、export、
extends、final、float、goto、implements、import、int、interface、long、native、
package、private、protected、public、short、static、super、synchronized、throws、
transient、volatile

4. 原始值和引用值
变量可以存放两种类型的值:原始值和引用值
  • 原始值(primitive value):存储在栈(stack)上的简单数据段
  • 引用值(reference value):存储在堆(heap)中的对象

5. 原始类型
ECMAScript有5种原始类型,即Undefined、Null、Boolean、Number和String,通过typeof运算符可以判断一个值是否在某种类型的范围内。
~Undefined类型:该类型只有一个值undefined,当声明的变量没有初始化时它的默认值是undefined。
var temp;
alert(temp == undefined);    // true
alert(typeof temp);    // "undefined"
	
当函数无明确的返回类型时,返回类型也是undefined。
~Null类型:Null类型也只有一个值null,值undefined实际上是从null派生来的,因此ECMAScript将它们定义为相等的
~Boolean类型:有两个值true和false
~Number类型:这种类型既可以表示32位整数,也可以表示64位浮点数。有几个特殊值也被定义为Number类型,分别是:Number.MAX_VALUE和Number.MIN_VALUE,还有当计算生成的数值大于Number.MAX_VALUE时,将被赋予Number.POSITIVE_INFINITY(Infinity);同样,生成的数值小于Number.MIN_VALUE时,将被赋予Number.NEGATIVE_INFINITY
(-Infinity)。可以用isFinite()方法判断一个数值是不是无穷大。还有一个特殊值是NaN。NaN和无穷大都不能用于算数计算,另外NaN与自身不相等。
alert(NaN == NaN); // false
alert(isNaN("blue")); // true
alert(isNaN("123"));  // false

~String类型:字符串是唯一没有固定大小的原始类型。字符串的字面量可以用单引号或者双引号声明。

6. 类型转换

  • 转换成字符串

3种主要的原始值Boolean、Number和String都有toString()方法,可以把它们的值转换成字符串。Boolean型的toString()方法只是输出true或者false;Number类型的toString()方法有两种模式:默认模式和基数模式,所谓基数模式是可以将数值转换为二进制、八进制和十六机制,例如:
var iNum = 10;
alert(iNum.toString(2)); // 1010
alert(iNum.toString(8)); // 12
alert(iNum.toString(16)); // A

  • 转换成数字

ECMAScript提供了两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat(),这两个方法只对String类型生效,其他类型返回都是NaN,例如:
alert(parseInt("1234blue"));  // 1234
alert(parseInt("0xA"));  // 10
alert(parseInt("22.5"));  // 22
alert(parseInt("blue"));  // NaN
alert(parseFloat("1234blue"));  //1234.0
alert(parseFloat("0xA"));  // NaN
alert(parseFloat("22.34.5"));  // 22.34
alert(parseFloat("0908"));  // 908

7. 引用类型

  • Object类:ECMAScript中的所有类都由这个类继承而来。
  • Boolean类:Boolean类是Boolean原始类型的引用类型。(注意:开发时最好使用Boolean原始值)
  • Number类:Number类是Number原始类型的引用类型。(注意:只要可能,都使用数字的原始表示法)
  • String类:String类具有length属性,它代表字符串中的字符个数;String类拥有大量的方法,可以查阅http://www.w3cschool.cn/提供的JavaScript帮助手册。


8. 运算符

~一元运算符
delete: 删除对以前定义的对象属性或方法的引用
void: 对任何值都返回undefined, 用于避免输出不应该输出的值
++/--: 自增/自减运算
+/-: 正/负号运算
~逻辑运算符
! && ||
~算术运算符
+ - * / %
~关系运算符
> < >= <= == != ===
~条件运算符
? :
~赋值运算符
= += -= *= /= %= 
~位运算符
>> << >>> ~ & | ^

9. 语句
(不解释)
  • if...else
  • do...while
  • while
  • for
  • for-in
  • break / continue
  • with
  • switch...case...default

 10. 函数

函数是一组可以随时随地运行的语句,是ECMAScript的核心。与Java或者C#等语言不同,函数在JavaScript是一等公民,其地位相当于Java中的类(JavaScript中的对象是通过函数创建的)。声明函数的关键字是function,由于是弱类型语言,函数没有返回类型,参数也不需要指定返回类型。

ECMAScript中的函数不能重载。可以用相同的名字在同一个作用域中定义两个函数不会引发错误,但是真正使用的是后一个函数。函数中有一个特殊对象arguments,这使得开发者不需要指定参数名就可以访问函数的参数。

在ECMAScript中,函数实际上是功能完整的对象。用Function类可以表示开发者定义的任何函数。可以用Function类直接创建函数,如下所示:


var sayHi = new Function("name", "alert('Hello, ' + name)");
sayHi("LUO Hao");	// Hello, LUO Hao

注意:尽管可以用Function构造函数创建函数,但是最好不要使用它,因此它定义函数比用传统的方式要慢得多。但是需要注意所有的函数其实都是Function类的实例。

还有一个和函数相关的概念叫“闭包”,这个在后面的章节中讲解。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值