JavaScript-基礎文法(2)
if語句
var a = 3; if(a==4){ alert("yes"); }else{ alert("no"); }//no,但是改一下,if(a=4),會列印yes,a被賦值為了4,!0 // 所以一般都是常量放左邊,if(4==x),如果刪=,就會報錯
其餘的和java是一樣的
switch語句
和java用法相同,只是這個接收的類型多
關於switch和if的使用:
如果是一個區間,或結構運算完是boolean型的進行判斷的時候用if
如果對幾個固定的值進行判斷的話,可以用switch,它一載入,語句會進記憶體,答案可在記憶體中進行選擇。
迴圈語句:
var x = 1; document.write(""); while(x<5){ //alert("x="+x); // document.write(" x = "+x+"
")//將資料寫到當前頁面 document.write("x = "+x+"
"); x++; } document.write(""); for(var i = 0;i<5;i++){//別寫順手了。寫成int i document.write("i = "+i+"
"); } w:for(var i = 1;i<3;i++){ //w是標號, for(var j = 1;j<3;j++){ document.write("i = "+i); break w;//跳出的標號所在的迴圈 } }
數組:
Js的數組定義了兩種方式:
1. var arr = [1,2,3],var brr = [];
2.var arr = new Array();
//第一種 document.write("======================================
"); var arr = [1,2,3]; // alert(typeof(arr));//物件類型,object // alert("len="+arr.length);//數組長度 arr[1] = 250; arr[4] = 666;//Js數組特點,數組長度是可變的 arr[2] = "hello"; arr[5] = true;//Js數組特點,元素類型任意 for(var i = 0;i"); } //PS:數組操作最好儲存同一類型 document.write("======================================
"); //第二種 //var brr = new Array();//相當於var arr = []; //var brr = new Array(10);數組定義,並長度是10 var brr = new Array(10,9,8,7,6);//數組定義,元素是10,9,8,7,6 document.write(brr[2]+"
");
函數:
定義格式:通過指定的關鍵字來定義
function 函數名(參數列表)
函數體
return 返回值;(如果沒有具體的返回值,return 可以省略)
function sum(x,y){//因為是未知內容,所以不需定義var return x+y; } alert(sum(3,1));//掉用
細節:
1.只要使用了函數的名稱,就是對該函數的調用
2.函數中有一個數組(argument),在對傳入的參數進行儲存
function sum(x,y){ alert(x+":"+y); } sum(); sum(3);//3:undefined,可見Js不存在重載,函數定義幾個參數,就該傳遞幾個 function add(x,y){ alert(arguments.length);//5 for(var i = 0;i"); } } add(1,2,3,4,5);
3.
function sum(x,y){ return 100; } var he = sum();//如果var he = sum;,會彈出sum函數的代碼 alert("he = "+he); var hee = sum; alert(hee);//想當於alert(sum) alert(hee(1,3));//100 function show(){ alert("run"); } alert(show());//列印 run , undefined
Js是基於對象的,所以底層都是對象,函數名實際上就是底層對象名,var he = sum();正常返回100,如果沒寫括弧,會直接把對象引用sum的地址賦值給he,也就是函數對象具有了兩個函數名,再執行alert,如果he指向的是對象,那麼以字串形式列印,就是該函數的代碼定義格式
動態函數:
* Js的動態函數
* 使用的是JS中內建的一個對象Function
* 但是用的不是很多,一般還是普通函數
* 參數列表,函數體都是通過字串動態指定的
* 而普通函數的參數列表和函數體已經寫死了,無法改變
*/
function add(x1,y1){ return x1+y1; } var add1 = add(1,2); alert(add1); var result = new Function("x,y","var sum; sum = x+ y;return sum;"); var sum = result(1,2); alert("sum = "+sum);
匿名函數:
//匿名函數:沒有名字,函數的簡寫形式
var result = function (a,b){ return a+b; } alert(result(1,2)); /*==================================*/ function H(){ alert("H"); } var HH = H(); /*簡寫形式如下*/ var hh = function(){ alert("H"); }
quantum變數和局部變數:
Js的全域變數與Java有極大的不同
<script type="text/javascript"> for(var x = 1;x<5;x++){ document.writeln("x = "+x); } document.writeln("x = "+x); </script> <script type="text/javascript"> document.writeln("x = "+x); </script>
//for中定義的x的範圍,不僅僅是它所在的局部<script>片段中有效,可以簡單的理解為在整個頁面都效
Js的局部變數:
<script type="text/javascript"> function show(){ var x = 1;//函數裡定義的變數是局部的 } document.writeln("x = "+x);//訪問不到 </script>
PS:在指令碼中定義的變數是全域的,在函數中定義的變數是局部的,最好是有區別的定義,避免出現一些不必要的問題
var x = 3;//全域的x function show(x){ x = 8;//局部變數的x } show(x); document.writeln("x = "+x);//3
Js的常見對象:
1.Object:所有對象的god
方法:
(1).toString():將對象變成字串
function show(){ alert("run"); } alert(show.toString()); var arr = [1,2,3,4]; alert(arr.toString());//toString,可省略 var ab = function(){ alert("ni"); } alert(ab);
(2).valueOf():和toString(),差不多,使用方式 對象.valueOf();
var arr = [1,2,3,4]; alert(arr.valueOf());var obj = new Object("asd");//-> var obj = new Object() , obj = "asd";alert(obj.valueOf());