JavaScript 概述
JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。
特点:
- 交互性(它可以做的就是信息的动态交互)
- 安全性(不允许直接访问本地硬盘)
- 跨平台性(只要是可以解释Js的浏览器都可以执行,和平台无关)
JavaScript与Java不同
JS是Netscape公司的产品,前身是LiveScript;Java是Sun公司的产品,现在是Oracle公司的产品。
JS是基于对象,Java是面向对象。
JS只需解释就可以执行,Java需要先编译成字节码文件,再执行。
JS是弱类型,Java是强类型。
JavaScript与Html的结合方式
想要将其他代码融入到Html中,都是以标签的形式。
- JS代码存放在标签对中。
- 当有多个html页面使用到相同的JS脚本时,可以将js代码封装到一个文件
中,只要在script标签的src属性引入一个js文件。(方便后期维护,扩展)
注意:如果在script标签中定义了src属性,那么标签中的内容不会被执行。
例:
注:规范中script标签早期有一个属性language,而现在使用type属性。
JavaScript语法
每一种语言都有自己的语法规则,JS语法与Java很像,所以学习起来比较容易。JS中也一样有变量,语句,函数,数组等常见语言组成元素。
变量
通过关键字var(variable)来定义,弱类型既是不用指定具体的数据类型。
例:var x = 3; x = “hello”;
注:JS中特殊的常量值:undefined,当变量没有初始化就被使用,该变量的值就是undefined(未定义)。
注意:Javascript的语句在结尾处是可以不用分号结束的,非严谨语言的特点。
但为了符合编程规范,需要像java一样定义结束符。
而且有些情况是必须写分号的,如:var x = 3 ; var y =5如果两条语句写在同一行,就需要分号隔开。
运算符
Javascript中的运算符和Java大致相同。
只是运算过程中需要注意几点:
1. var x = 3120/1000*1000; x = 3120;而不是3000。
2. var x = 2.4+3.6 ;x = 6;而不是6.0
3. var x = “12” + 1; x = “121”;加号对于字符串是连接符
x = “12” – 1 ; x = 11;
4. && ||是逻辑运算符 & |是位运算符。
5. 也支持三元运算符
6. 特殊运算符 typeof : 返回一个操作表达式的数据类型的字符串。
var x = 3;
var y = “123”;
var z = false;
typeof(x); //number
typeof(y); //string
typeof(z); //boolean
语句(与Java语句格式相同)
函数
一般函数
格式:
function 函数名(形式参数...)
{
执行语句;
return 返回值;
}
函数是多条执行语句的封装体,只有被调用才会被运行。
注意:调用有参数的函数,但没有给其传值,函数一样可以运行,或者调用没有参数的函数,给其传值,该函数也一样运行。
说的简单点:只要写了函数名后面跟了一对小括号,该函数就会运行。那么传递的参数呢?
其实,在函数中有一个参数数组对象(arguments),该对象将传递的参数都封装在一个数组中。
例:
function demo()//定义函数。
{
alert(arguments.length);
}
demo(“hello”,123,true);//调用函数。
那么弹出的对话框结果是3,如果想得到所有的参数值,可以通过for循环遍历该数组。
for(var x=0; x<arguments.length; x++)
{
alert(arguments[x]);
}
为了增强阅读性,最好按照规范,按定义好的形式参数传递实际参数。
函数在调用时的其他写法:
var show = demo();//show变量接收demo函数的返回值。
var show = demo;//这种写法是可以的,意为show和demo代表同一个函数。
//那么该函数也可以通过show()的方式运行
。
动态函数
通过Js的内置对象Function实现。
例:
var demo = new Function(“x,y”;”alert(x+y);”);
demo(4,6);
如同:
function demo(x,y)
{
alert(x+y);
}
demo(4,6);
不同的是,动态函数,参数以及函数体都可以通过参数进行传递,可以动态指定。
1
匿名函数
格式:function(){...}
例:var demo = function(){...}
demo();
通常在定义事件属性的行为时较为常用。
例:
function test()
{
alert(“load ok”);
}
window.onload = test;
可以写成匿名函数的形式:
window.onload = function()
{
alert(“load ok”);
}
匿名函数就是一种简写格式。
数组
方便操作多元素的容器,可以对其中的元素进行编号。
特点:可以存任意元素,长度是可变的。
格式:
var arr = new Array();
arr[0] = “hello”;
arr[1] = 123;
var arr = [‘hello’,123,true,”abc”];
通过遍历即可对数组进行基本操作。
for(var x=0; x<arr.length; x++)
{
alert(arr[x]);
}
对象
Js除了已经提供的内置对象外,也可以自定义对象。
例:
function Person()//很象java中的构造函数。P不一定要大写。
{
}
var p = new Person();
p.name = “zhangsan”;//定义成员变量。
p.age = 20;
//定义成员函数。
p.run = function()
{
alert(“run”);
}
p.run();
或:
> function Person(name,age) {
> this.name = name;
> this.age = age; }
> var p = new Person(“zhangsan”,20);
Js用于操作对象的语句
with语句
格式:
> with(对象) { }
应用:当调用一个对象中多个成员时,为了简化调用,避免”对象.”这种格式的重复书写。
var p = new Person(“zhangsan”,20);
alert(p.name+”,”+p.age);
可以写成:
var p = new Person(“zhangsan”,20);
with(p)
{
alert(name+”,”+age);
}
with语句定义了某个对象的作用域,在该域中可以直接调用该对象的成员。
for…in语句
用于遍历对象属性。
例:
var p = new Person(“zhangsan”,20);
for(x in p)
{
alert(x);//结果是两个对话框,一个是name,一个是age。
alert(x+”:”+p[x]);
//可以得到属性与属性的值。p[x]:p对象就是个数组,要通过指定的元素名获取元素的值。
}