JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

JS语言特性

JavaScript 是一门动态的,弱类型,基于原型的脚本语言。在 JavaScript 中“一切皆对象”,在这一方面,它比其他的 OO 语言来的更为彻底,即使作为代码本身载体的 function,也是对象,数据与代码的界限在 JavaScript 中已经相当模糊。虽然它被广泛的应用在 WEB客户端,但是其应用范围远远未局限于此。下面就这几个特点分别介绍:

Javascript动态语言特性

动态性是指,在一个 Javascript 对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例:
//定义一个对象
var obj = new Object();
//动态创建属性name
obj.name = "an object";
//动态创建属性sayHi
obj.sayHi = function(){
    return "Hi";
}
obj.sayHi();

加入我们使用 Java 语言,代码可能会是这样:
class Obj{
    String name;
    Function sayHi;
    public Obj(Sting name, Function sayHi){
        this.name = name;
        this.sayHi = sayHi;
    }
}
Obj obj = new Obj("an object", new Function());

动态性是非常有用的,这个我们在后面章节中详细讲解。

Javascript弱类类型特性

与 Java,C/C++不同,Javascript 是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,比如:
//定义一个变量s,并赋值为字符串
var s = "text";
print(s);
//赋值s为整型
s = 12+5;
print(s);
//赋值s为浮点型
s = 6.3;
print(s);
//赋值s为一个对象
s = new Object();
s.name = "object";
print(s.name);

结果为:
text
17
6.3
Object

可见,Javascript 的变量更像是一个容器,类似与 Java 语言中的顶层对象 Object,它可以是任何类型,解释器会根据上下文自动对其造型。

弱类型的好处在于,一个变量可以很大程度的进行复用,比如 String 类型的 name 字段,在被使用后,可以赋值为另一个 Number 型的对象,而无需重新创建一个新的变量。

不过,弱类型也有其不利的一面,比如在开发面向对象的 Javascript 的时候,没有类型的判断将会是比较麻烦的问题,不过我们可以通过别的途径来解决此问题。

Javascript的解释与编译

通常来说,Javascript 是一门解释型的语言,特别是在浏览器中的 Javascript,所有的主流浏览器都将 Javascript 作为一个解释型的脚本来进行解析,然而,这并非定则,在Java 版的 Javascript 解释器 rhino 中,脚本是可以被编译为 Java 字节码的。

解释型的语言有一定的好处,即可以随时修改代码,无需编译,刷新页面即可重新解释,可以实时看到程序的结果,但是由于每一次都需要解释,程序的开销较大;而编译型的语言则仅需要编译一次,每次都运行编译过的代码即可,但是又丧失了动态性。