JavaScript概述
JavaScript是基于对象和事件的脚本语言。
特点:
1、安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互;
2、跨平台性(只要是可以解释JS的浏览器都可以执行,和平台无关)。
JavaScript与Java不同
1、JS是Netscape公司的产品,Java是Sun公司的产品;
2、JS是基于对象,Java是面向对象;
3、JS只需解释就可以执行,Java需要先编译成字节码,再执行;
4、JS是弱类型,Java是强类型;
5、js是非严谨的,java是严谨的,javascript运行在网页的客户端。
JavaScript和Html的结合方式
想要将其他代码融入到html中,都是以标签的形式。
1、JS代码存放在标签对<script>…</script>中;
2、使用script标签中的src属性引入一个js文件(方便后期维护、扩展);
例如:<script src=”test.js” type=”text/javascript”></script>
注:规范中script标签中必须加入type属性。
JavaScript语法
每一种语言都有自己的语法规则,JS语法与Java很像,所以学习起来比较容易。JS中也一样有变量、语句、函数、数组等常见的语言组成元素。
1、变量
通过关键字var来定义,弱类型即不用指定具体的数据类型。
例如:var x = 3;x=”abc”;
注:JS中特殊的常量值:undefined,当变量没有初始化就被使用,该变量的值就是undefined(未定义)。
2、语句(与Java语句格式相同)
1、判断语句(if语句)
注:var x=3; if(x==4)//可以进行比较运算;if(x=4)//可以进行赋值运算,而且可以同样进行判断,不报错。
因为在JS中0就是false,非0就是true(通常用1表示);所以if(x=4)结果为true。
2、选择结构(switch语句)
3、循环结构(while语句、do…while语句、for语句)
JS特有的语句:with(对象){}:可以确定对象所使用的范围。在范围内,可以直接使用指定对象的属性和行为,而不用:对象. 形式调用。简化了对象的操作。
for(变量 in 对象):可以对变量的属性以及行为进行遍历。
注:不同的是,没有具体数据类型的限制,使用时要注意。
JS的错误提示:在网页的状态栏左下角叹号提示!
代码演示:九九乘法表
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>九九乘法表</title>
<style type="text/css">
table{
width:600px;
border-collapse:collapse;
}
table td{
border:#000099 1px solid
}
</style>
</head>
<body>
<script type="text/javascript">
document.write("<table>");
//相当于syso
for(var x=1;x<=9;x++){
document.write("<tr>");
for(var y=1;y<=x;y++){
document.write("<td>"+y+"*"+x+"="+x*y+"</td>");
}
document.write("</tr>");
}
document.write("</table>");
</script>
</body>
</html>
效果图:
3、函数
一般函数:格式:function 函数名(形式参数…)
{
执行代码;
return 返回值;
}
函数时多条执行语句的封装体,只有被调用才会被执行;
注意:调用有参数的函数,但没有给其传值,函数一样可以运行,或者调用没有参数的函数,给其传值,该函数也一样运行。简单说:只要写了函数名后面跟了一对小括号,该函数就会运行。其实,在函数中有一个参数数组对象(arguments),该对象将传递的参数都封装在一个数组中。
为了增强阅读性,最好按照规范,按照定义好的形式参数传递实际参数。
动态函数:通过JS的内置对象Function实现。
匿名函数: function(){…},通常在定义事件属性的行为时较为常用。
例如:window.onload = test;
可以写成匿名函数的形式:
window.onload = function()
{alert(“ok”);}
匿名函数就是一种简写格式。
4、数组:方便操作多元素的容器,可以对其中的元素进行编号。
特点:可以存储任意元素,长度是可变的。
格式:var arr = new Array();
arr[0]= “hello” arr[1] = 123;
var arr=[‘hello’,123,true,”abc”];
通过遍历即可对数组进行基本操作;
for(varx=0;x<arr.length;x++){alert(arr[x]);}
代码演示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>javascript函数</title>
</head>
<body>
<script src="arraylool.js" type="text/javascript"> </script>
<script type="text/javascript">
var arr=[12,36,41,95,1,30];
//不用写var 直接写arr即可
function show(arr){
for(var x=0;x<arr.length;x++){
for(var y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
var temp=arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
show(arr);
var str="";
function printArray(arr){
for(var x=0;x<arr.length;x++){
if(x!=arr.length-1)
str+=arr[x]+",";
else
str+=arr[x];
}
return str;
}
printArray(arr);
var s=printArray;//函数也是一个对象
alert(str);
alert(s);
//动态函数
var show1= new Function("x","y","var sum=x+y;return sum;");
var sum = show1(1,3);
alert(sum);
//匿名函数,c常常用于事件驱动
var show2 = function(){
alert("functiong run");
}
show2();
//可以通过函数来描述对象
/*function Person(){
alert("person init");
}
var p = new Person();
p.name = "zhangsan";
p.age = 30;
p.chifan = function(){
alert("eat....");
}
p.chifan();
*/
function Person(name,age){
this.name = name;
this.age = age;
}
var p = new Person("lisi",23);
alert(p.name+"....."+p.age);
function Student(name,age){
this.name = name;
this.age = age;
}
var stu = new Student("wangwa",32);
with(stu){
alert(name+"............"+age);
}
for(s in stu){
alert(s+"::"+stu[s]);
}
</script>
</body>
</html>
5、自定义对象:JS除了已经提供的内置对象外,也可以自定义对象。
例如:
function Person()//很像java中的构造函数,P不一定要大写。
{
}
var p = new Person;
p.name = “zs”;
p.age = 20;
p.run = function()//定义成员函数
{
}
或者:
function Person(name,age){
this.name= name;
this.age= age;
}
var p = new Person(“lisi”,23);
6、Javascript中已定义好的一些对象,String、Math、Date、Array、Function。
这些对象都有一个属性叫做prototype原型,prototype可以获取执行的对象引用,可以通过该引用给已有的对象赋予一些新的功能;那么在使用该对象时,可以直接调用定义好的新功能。
function getMax()
{
varmax = 0;
for(varx=1;x<this.length;x++)
{
if(this[x]>this[max])
max = x;
}
return this[max];
}
var arr = [3,4,5,6,7];
arr.sort();//直接调用Array对象的sort对象的sort方法对数组进行排序,
将getMax方法添加到Array对象中,Array.prototype.getMax = getMax;
var x = arr.getMax();
alert(“max = ”+x);
var str = “abc”;
str.subString(1,2);
str.bold();//<b>str</b>
常见的全局方法:定义在Global对象中
parseInt(numstr,[radix]);//将数字格式的字符串转成整数,如果指定了基数,那么numstr就会按照执行基数进行转换。
var num = parseInt(“110”,2);//表示将”110”这个字符串会按照二进制进行转换。
alert(“num = ”+num);//num = 6;
var x=6;
alert(x.toString(2));//110,获取6对应的二进制表现形式。