語法:
一、關鍵詞:大部分都和java一樣除了定義變量全都用的var,函數定義都用function
二、JavaScript的標識符、分隔符、書寫風格都和java的一樣。
三、註釋:javascript的註釋只有//和/*,,,,*/,不存在/**,,,,*/
四、數據類型有五種全部都是小寫
1、number:相當於java中的short、long、float、int、double類型。
2、boolean:0等價於false,1等價於true,javascript語言和c語言一樣有0和非0的區別Boolean還可進行加減的運算,在運算之前會被轉換成number類型。
3、object:object是數組中各給定初始值的元素的類型,數組中元素如果爲賦初值那麼他的數據類型爲undefined。
4、string:在javascript中沒有字符和字符串的區別,因此字符或字符串都可以用單引號或者雙引號表示。
5、undefined:當一個變量被聲明但是沒有賦值時是undfined類型。
通過typeof()函數可以獲得數據的類型。
<script type="text/javascript">
//alert(typeof(1));//number
//alert(typeof("c"));//string
//alert(typeof("abc"));//string
// alert(typeof(2==2));//booelan
//alert(typeof('c'));//string
// var arr=[1,2,3];
// alert(typeof(arr));//object
//var a;
//alert(typeof(a));//undefined
</script>
五、變量----用關鍵詞var來聲明
var x=10;
var y=true;
變量的語法:
1)、js中的變量及時前面定義過,也可以重新定義,並且可以定義爲其他類型的變量
2)、多個腳本段之間的變量是同一作用於的相當於全局變量,而在函數定義的變量是局部變量只能在函數體中使用。
3)、變量聲明瞭但是沒有賦值,javascript將它初始化成undefined
4)、一個變量沒有聲明也可以賦值,但是沒有聲明的變量不可以被使用。
注意:1)、函數內部可以聲明和函數外部名字一樣的變量,在函數的內部會覆蓋掉外部的,但是在外部的變量是不受內部變量影響的。2)、只有函數內部定義的是局部變量,其他的都是全局變量。
var x=10; x=true;//javascript是弱類型,java是強類型
y=10;
alert(x+y);//11;
alert(x);//掛----javascript中一句語句掛了但是不會影響到前面語句的運行,而java不行一掛全掛
六、前段腳本掛了並不會影響到下一段腳本。
七、常量:javascript中只有直接常量沒有間接常量。
八、運算符:
1)、算術運算符:+、-、*、/、++、--、%(其用法和java的一樣,其符號是由被除數決定的)
function a1(){
var d=2.2345646;
d++;
alert(d);//++運算不僅可以用於整數也可以能用於其他類型甚至是boolean類型
var a=2.3;
var b=3.7;
alert(a+b);//6 javascript是弱運算
a=2;
alert(2/100*100);//2 javascript中沒有int 和double的區別都是number
//特殊的+,-
alert("1"+2);//12
alert("2"-1);//1
/*在遇到字符串的運算中如果使用的+號那麼起到的是連接字符串的作用。
如果是-號那麼先將支付穿變成number類型之後再進行運算*/
alert(true+1);//2
alert(false+1);//1
}
2)、關係運算符:==、!=、>、<、<=、>=和Java的使用方法一致
3)、邏輯運算符:!、&&、||、不存在&、|、^
注意:
var t=1;
if(t=-4){//一直爲true.javascript中只要非0都是true,是0的話就是false;
alert("aaaaaa");
}
4)、位運算符:~(非)、&、|、^、<<(向左移一位乘2)、>>(向右移一位除以2)、>>>(無符號右移)。其用法和Java一致。
5)、賦值運算符:=、+=、*=、/=、%=。其用法和Java一致
6)、條件運算符(三元運算) :表達式1?表達式2:表達式3;
var a=35,b=135;
var max=a>b?a:b;
alert(max);
九、流程控制
if流程語句中要注意:
if(t=1){//該判斷的結果永遠爲true
alert("aaaa");
}
if--else if--else語句中,只會有一個語句塊被執行(判斷成功後會執行一個語句塊,之後將會退出if--else if--else結構,不會再進行判斷,不具有執行其他語句的機會)
var a=4;
if(a>1){
alert("1111111111");//輸出結果
}else if(a>2){
alert("2222222222");
}else if(a>3){
alert("3333333333");
}else {
alert("4444444444");
}
swicth流程控制語句
在java中switch的判斷只能用於byte、int等整數類型和char類型和jdk7中新增的String類型。
javascript中switch中的判斷支持所有的格式。
var x="abc";
switch(x){
case "aa"://字符串要用單引號或者雙引號包起來
alert("aaaaaaaaaaaa");
break;
case "bb":
alert("bbbbbbbbbbbb");
break;
case "cc":
alert("cccccccccccc");
break;
case "dd":
alert("dddddddddddd");
break;
default:
alert("abc");
}
一個小點:在javascript中可以通過id獲得數據框中用戶輸入的數據
var x=document.getElementById("t1").value;
十、數組數組在javascript中很重要因爲它相當於java中的數組和集合。
一維數組:
數組定義方式一:直接賦值
java:int a[]={1,2,3,4,5};
javascript:var a=[1,2,3,4,5];//javascript在聲明的數組類型時候沒有[],但是數據是用[]封裝的。
var arr=[1,2,3,4,5];
alert(arr);
注意:javascript可以直接用數組名輸出所有的數組元素。
alert(arr[0]+arr[3]);
注意:對於下標的引用和Java的一致。 var arr=[1,3,5];
arr[0]=8;
arr[5]=7;
arr[4]="abc;
alert(arr);//8,3,5,undefined,undefind,7 注意:1、java中數組的下標是可以越界的,但是javascript就不會因爲javascript像當於一個集合,長度可以自動的增長。
2、如果出現中間位置未被賦值的,則它的類型是undefined。
3、javascript總的數組的元素可以是任何的類型。
數組定義方式二:先定義一個空的數組再進行賦值
var arr=[];
arr[0]=1;
arr[5]=3;
arr[10]=7;
alert(arr.length);//獲得數組的長度
數組定義的方式三:用new對象的方式創建
var arr=new Array(4);
var arr2=new Array(1,2,3,4,5);
注意:當Array()中給定的是一個整數參數,則表示的是數組的長度,如果是一系列的數據則表示的是初始化數組。
二維數組:
var arr=[];
arr[0]=[1,3,5];
arr[1]=[2,5,3,5,6];
arr[2]="abc";
for(var i=0;i<arr.length;i++){
for(var j=0; j<arr[i].length;j++){
document.write(arr[i][j]+" ");
}
document.write("<br/>");
}
注意:如果將arr[i]一字符串賦值,系統將會自動把字符串變成字符數組。
十一:函數講解
javascript中定義函數的格式:
function 函數名(){
函數體;
[return 返回值]; //表示可有可無
}
函數的類型有兩種:
//1 無參無返回函數
function a1(){
alert("aaa....");
}
//2 有參有返回函數
function add(a,b){
var s=a+b;
return s;
}
function a2(){
var ab=add(100,200);
alert("ab="+ab);
}
javascript函數細節:
js函數的一些小細節---與Java不一樣的地方:
1、函數調用與參數
javascript中的函數不存在重載。定義了函數,只要通過他的函數名就可以調用它,
調用與否和參數的個數無關(如果傳遞的參數的個數少於函數定義的參數個數則其他未被傳參的爲undefined,
如果傳遞的參數的個數大於函數定義的參數個數那就支取需要,多餘的就不接收)。
注意:1、javascript的函數只以函數名來識別調用,跟參數沒關係。
2、每個函數內部都有一個arguments[]用於接收並存儲參數
不管函數定義時的參數有沒有被定義或者接受。
function show(x,y){
alert(x+","+y);
}
function a1(){
show(1,8);//1,8
show(1);//a,undefined
show(1,2,3);//1,2
show("aa",0.6);//aa,0.6
}
function show2(x,y){
alert(x+","+y);
for(var i=0; i<arguments.length;i++){
document.write(arguments[i]+" ");
}
}
function a2(){
show2("aa", 0.6, 3, true);
}
2、函數有別名
函數名只是函數對象的一個引用(變量),
同一個函數對象可以有多個引用指向他(非聲明時的名稱就是別名),
通過別名可以和原函數一樣訪問該函數的對象。
function getNum(){
return 100;
}
function b1(){
var v = getNum();
alert( v );
}
function b2(){
//alert(getNum); //getNum.toString()
var aa=getNum;
//alert( aa ); //aa.toString()整個函數語句
alert( aa() ); //aa()和getNum()效果一樣
}
三:可以用new的方式創建函數---動態函數,類似於Java中的類反射
function a(){
var add=new Function("x,y","var sum;sum=x+y;return sum");//逗號前的內容表示的是參數列表,逗號後的內容表示的是函數體。
var s=add(10,20);
alert(s);
}
匿名函數:在函數的內部定義函數。用a3進行調用
//匿名函數
function a3(){
var abc=function(a,b){
return a*b;
};
alert(abc(2,5));
}
事件註冊時函數的格式:
btnObj.οnclick=function(){ 函數體..... };btnObj:是按鈕的對象。