JavaScript是一门动态的、弱类型、基于原型的脚本语言。虽然被广泛应用于Web客户端,但是其应用范围不仅仅局限于此。下面介绍其四个特点。
1 动态性
动态性是指,在一个JavaScript 对象中,要为其一个属性赋值,我们没有必要先创建一个字段,而是只需在使用的时候给它赋值就行了。
var obj = new Object(); //定义一个对象 obj.name = 'an object'; //动态的创建属性 name 假如使用Java,则代码可能会是这样; class Obj { String name; public Obj() { this.name = name; } }
2 弱类型
与Java,C/C++不同,JavaScript是弱类型的,它的数据类型无需在声明时指定,解释器会自动根据上下文对变量进行实例化。
var s = "Sunday"; // 定义一个变量 s,并赋值为字符串 console.log(s); // 输出结果为 Sunday s = 12 + 5; // 赋值 s 为整型 console.log(s); // 输出结果为 17 s = 6.3; // 赋值 s 为浮点型 console.log(s); // 输出结果为 6.3 s = new Object(); // 赋值 s 为一个对象 s.name = "Tom" console.log(s); // 输出结果为 Tom
3 面向对象
在JavaScript中一切都是对象
var name_list = [ {name: '小明',age:24}, {name: '小红',age:25}, {name: '小李',age:28} ]; staff.filter(function(item) { return item.age > 24; }); 结果为 [ {name: '小红',age:25}, {name: '小李',age:28} ]
从这个例子中我们可以看到函数可以像其他任何数据类型(字符串,数字)那样,被传递给其他函数。即在JavaScript中一切都是对象。
4 解释与编译
通常JavaScript是一门解释型语言,特别是在浏览器中,所有的浏览器都是将其作为一个解释型的脚本来进行解析。然而在Java版的JavaScript解释器Rhino中,脚本可以被编译为Java字节码。
解释型的语言的好处就是可以随时修改代码,无需编译,刷新页面即可重新解释,可以实时看到程序结果,但每次都需解释,程序开销较大;而编译型的语言则仅需要编译一次,每次都运行编译过的代码即可,但又丧失论动态型。(此为大概的叙述,如需详解请自行查阅)