JavaScript簡單介紹javascript
一、JavaScript的簡介
是基於對象和事件驅動的語言,應用與客戶端。
- 基於對象:提供的對象可直接拿過來使用
- 事件驅動:html作網站靜態效果,JavaScript動態效果
- 客戶端: 專門指的是瀏覽器
JavaScrip的特色
(1)交互性:信息的動態交互
(2)安全性:js不能訪問本地磁盤
(3)跨平臺性:支持JavaScript的瀏覽器均可運行
JavaScrip和Java的區別
(1)Java是sun公司,被oracle收購;js是網景公司
(2)JavaScript是基於對象,Java是面向對象
(3)Java是強類型的語言,JavaScript是弱類型的語言
- java int i = 10;
- js var i = 10; var m = "10";
(4)JavaScript只須要解析就能夠執行,而Java須要先編譯成字節碼文件在執行
JavaScrip組成(三部分)
(1)ECMAScript
- ECMA:歐洲計算機協會
- 有ECMA組織制定的js的語法,語句...
(2)BOM
- broswer object model:瀏覽器對象模型
(3)DOM
- document object model:文檔對象模型
script標籤放在的位置
建議把script標籤放到 </body>後面,這是一種默認的規範。
若是如今有這樣一個需求:
在js裏面須要獲取到input裏面的值,若是把script標籤放到head裏面會出現問題。
html解析是從上到下解析的,script標籤放到的是head裏面,直接在裏面取input裏面的值,由於頁面尚未解析到input那一行,確定取不到。
html
二、js和html結合方式(兩種)
第一種:使用一個<script >標籤【一般放在body標籤後】
<script type="text/javascript">
JavaScript代碼;
</script>java
第二種:使用script標籤,引入一個外部的js文件
<script type="text/javascript" src="JavaScript文件路徑" ></script>【使用第二種就不須要再script標籤裏寫代碼,不會被執行】數組
三、js的原始類型和聲明變量
java:byte short int long float double char boolean
js原始類型(五個)
- string:字符串
var str = "abc";
- number:數字類型
var m = 132;
- boolean:true or false
var flag = true;
- null
var date = new Date();
獲取對象的引用,null表示對象引用爲空,全部對象的引用也是object
- undifined
定義一個變量沒有被賦值
var aa;
typeof(變量名稱);查看變量數據類型瀏覽器
<script type="text/javascript"> // 定義一個字符串 var str="132"; alert(str); // 定義數字 var mm=123; alert(mm); // 定義boolean var flag=true; alert(typeof(flag)); </script>
四、js語句
if判斷語句
switch語句
循環語句 for while do-while安全
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 </body> 9 <script type="text/javascript"> 10 // if語句 11 /*var a = 7; 12 if (a == 5) { 13 alert(a); 14 } else{ 15 alert("6"); 16 }*/ 17 18 // switch語句 19 /*var b=8; 20 switch (b){ 21 case 5: 22 alert(b); 23 break; 24 case 8: 25 alert(b); 26 break; 27 default: 28 alert("other"); 29 }*/ 30 31 // while循環 32 /*var i = 5; 33 while (i>1){ 34 alert(i); 35 i--; 36 }*/ 37 38 //for循環 39 for (var i=0;i<=3;i++) { 40 alert(i); 41 } 42 43 </script> 44 </html>
練習 實現99乘法表輸出到頁面上oracle
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 </body> 9 <script type="text/javascript"> 10 document.write("<table border='1' bordercolor='blue'>"); 11 // 循環行 12 for (var i=1;i<=9;i++) { 13 document.write("<tr>"); 14 // 循環列 15 for (var j=1;j<=i;j++) { 16 document.write("<td>"); 17 // 運算 18 document.write(j+"*"+i+"="+i*j); 19 document.write("</td>"); 20 } 21 document.write("</tr>"); 22 } 23 document.write("</table>") 24 </script> 25 </html>
五、js的運算符
不區分整數和小數ide
1 var j = 123; 2 alert(j/1000*1000);//123 3 // j/1000*1000 在Java裏獲得結果0 4 // 在js裏不區分整數和小數,123/1000=0.123*1000=123
字符串相加減操做函數
1 // 字符串的操做 2 var str="abc"; 3 alert(str+1); //abc1 相加時作字符串鏈接操做 4 alert(str-1); //NaN(表示不是一個數字) 相減時作減法運算
boolean操做
設置成true,至關於這個值是1
設置成false,至關於這個值是0工具
// boolean操做[true=1,false=0] var flag = true; alert(flag+1);//1+1=2 var flag = false; alert(flag+1);// 0+1=1
== 和 === 區別
===:先比較數據的類型再比較數據的值,若數據類型不一致,則爲false
==:先比較數據的類型再比較數據的值,若數據類型不一致,若是發現類型不一致都會向number轉型再比較
測試數據:
1 var a = 1; 2 var b = true; 3 var c = 'true'; 4 var d = "true"; 5 var e = "1";
測試結果:
1 alert(a===b); //false 2 alert(a===c); //false 3 alert(b===c); //false 4 alert(c===d); //true 5 alert(a===e); //false 6 7 alert(a==b); // true 8 alert(a==c); // false 9 alert(b==c); // false 10 alert(c==d); // true 11 alert(a==e); // true
字符串和數字布爾相加
1:字符串和其餘類型相加都會同化成字符串
2:數字和boolean類型相加都會同化成數字
1 var varstr = "abc"; 2 var varnum = 123; 3 var varbool = true; 4 alert(varstr+varnum+varbool); //abc123true 5 alert(varnum+varbool+varstr); //124abc 6 alert(varbool+varnum+varstr); //124abc
++ --
1 var a = 100; 2 alert(a++); //100 3 alert(a--); //101 4 alert(++a); //101 5 alert(--a); //100 6 alert(a);//100
** 引入知識
直接向頁面輸出的語句(可把內容顯示在頁面上)
document.write("aaaa");
document.write("<br/>");
document.write("bbbb");
document.write("<hr/>");
*能夠向頁面輸出固定值和html代碼
六、js數組 [數組可存放不一樣數據類型的數據]
1:定義數組方式(三種)
第一種:var arr=[1,2,3]; var arr=[1,"2",true];
1 var arr=[1,2,"3",new Date]; 2 alert(arr);
第二種:使用內置對象 Array對象
1 var arr = new Array(3);//定義長度爲3的數組 2 arr[0]="a"; 3 arr[1]="b"; 4 arr[2]="c"; 5 alert(arr);
第三種:使用內置對象 Array
1 var arr = new Array(2,4,5);//定義數組並直接賦元素 2 alert(arr);
2:數組的屬性 length 長度
1 var array01 = new Array(10); 2 var array02 = [123,"abc",new Date(),true]; 3 var varlength1 = array01.length; 4 var varlength2 = array02.length; 5 alert(varlength1);//10 6 alert(varlength2);//4
3:能夠經過修改數組的長度來達到刪除數組的目的
1 var array = [123,"abc",new Date(),true]; 2 array.length = 2; 3 alert(array);//123,abc /*new Date(),true被刪除*/ 4 array.length = 4;//當長度指定爲4時候,不夠以,,補齊 5 alert(array);//123,abc,,
4:數組的方法
數組名.push("新添加的元素");//數組末尾添加一個新元素
1 var array = [123,"abc",true]; 2 array.push("hello"); 3 alert(array);//123,abc,true,hello
數組名.pop(); //刪除數組最後一個項
1 var array = [123,"abc",true]; 2 array.pop(); 3 alert(array);//123,abc
數組名.unshift("添加的元素");//在數組第一個元素位置添加元素
1 var array = [123,"abc",true]; 2 array.unshift("aa"); 3 alert(array);//aa,123,abc,true
數組名.shift();//刪除數組第一個元素
1 var array = [123,"abc",true]; 2 array.shift(); 3 alert(array);//abc,true 4 //數組名.join();//鏈接全部 5 alert(array.join("-"));//abc-true
5:遍歷數組的兩種方式
1 //for 2 var array = [123,"abc",true]; 3 for(var i=0;i<array.length;i++){ 4 alert(array[i]); 5 } 6 //for in 7 for(var i in array){ 8 alert(array[i]); 9 }
可參照W3school:Array對象方法進行詳細參照學習
七、js函數(三種方式)
函數的參數列表裏不須要寫var,直接寫參數名稱
第一種:使用關鍵字function
function 方法名(參數列表){
//方法體;
返回值;//無關緊要(根據實際需求)
}
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <input type="button" value="test01" onclick="test01()"/> 9 <input type="button" value="test02" onclick="add(2,3)"/> 10 </body> 11 <script type="text/javascript"> 12 // 定義一個無參的方法 13 function test01(){ 14 alert("function") 15 } 16 // 定義一個有參的方法,實現兩個數相加 17 function add (a,b) { 18 var sum = a + b; 19 alert(sum);//5 20 } 21 //定義一個有參的方法:有返回值得效果 22 function add3 (a,b,c) { 23 var sum = a + b + c; 24 return sum; 25 } 26 alert(add3(1,2,3));//6 27 </script> 28 </html>
第二種:匿名函數【函數至關於匿名函數,add指向對象】
var add = function(參數列表){
方法體和返回值;
}
1 <body> 2 <input type="button" value="test" onclick="add(1,5)" /> 3 </body> 4 <script type="text/javascript"> 5 var add = function(m,n){ 6 alert(m+n); 7 return add; 8 } 9 </script>
第三種:(幾乎不用,瞭解。爲了說明函數也是對象 (形參,形參,代碼塊)
*** 使用到js裏面的一個內置對象 Function
var add = new function("參數列表","方法體和返回值");
// 第三種方式建立
var add = new Function("x,y","var sum;sum=x+y;return sum;");
八、js全局變量和局部變量
全局變量:在script標籤裏定義一個變量,這個變量在頁面中js部分均可以使用
- 在方法外部使用,在方法內部使用,在另外一個script標籤使用
局部變量:在方法內部定義一個變量,只能在方法內部使用
- 若是在方法外部調用這個變量,提示出錯
- SCRIPT5009:"n"未定義
- 調試工具,F12
九、函數的重載(什麼是重載?方法名相同,參數不一樣)
1 function add (a,b) { 2 return a+b; 3 } 4 function add (a,b,c) { 5 return a+b+c; 6 } 7 function add (a,b,c,d) { 8 return a+b+c+d; 9 } 10 11 alert(add(2,2));// NaN 12 alert(add(3,2,2));// NaN 13 alert(add(2,3,2,2));// 9
注:調用的是就近原則,因此第一個兩數相加調用的最後的方法。所以出現了前兩個方法時NaN
js的重載是否存在?(不存在)
(1)js裏面不存在重載。
(2)可是能夠經過其餘方式模擬重載的效果 (經過aruguments數組來實現,把傳遞的參數保存到 arguments數組裏面)
模擬多個參數重載效果相加:
十、全局函數
不屬於任何一個對象,直接寫名稱使用
- eval(string):計算 JavaScript 字符串,並把它做爲腳本代碼來執行
document.write(eval("2+2"))
- encodeURI(URIstring):字符串做爲 URI 進行編碼
- decodeURI(URIstring):對 encodeURI() 函數編碼過的 URI 進行解碼
注:encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
1 //encodeURI:進行編碼 2 document.write("<hr />"); 3 var str1 = "測試中文編碼:fdjale3234"; 4 var encode = encodeURI(str1); 5 document.write(encode); 6 //decodeURI:進行解碼 7 document.write("<hr />"); 8 var decode = decodeURI(encode); 9 document.write(decode);
- isNaN():判斷當前字符串是不是數字
若是是數字,返回false,若是不是數字,返回true
1 var str = "aaaa"; 2 alert(isNaN(str));
- parseInt():類型轉換(解析一個字符串並返回一個整數,返回後的整數至關於算術運算)
1 var str3 = "123"; 2 document.write(parseInt(str3)+1);//124