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對應的二進制表現形式。