javascript入門

來源:互聯網
上載者:User

javascript入門
JavaScript一、JavaScript概述1、JavaScript是什麼,有什麼作用?(瞭解)

*JavaScript是網際網路上最流行的指令碼語言。

*指令碼語言不能單獨使用,必須嵌入到其他語言中組合使用

*JavaScript不能單獨使用,必須和其他語言(HTML)結合使用

*瀏覽器解釋執行

*作用是:可以控制前端頁面的邏輯操作

例如:JS可以控制CSS的樣式;(一般)

JS可以對錶單項進行校正(重點)

JS可以對HTML元素進行動態控制(使用較多)

*特點:

安全性(沒有訪問系統檔案許可權,無法用來做木馬病毒)

跨平台性(瀏覽器有JS的解析器,只要有瀏覽器就能運行JS代碼,和平台無關)

      demo1.html                    <script type="text/javascript">var sum=0;// int sum=0;for(var i=1;i<=9;i++){// int i=1;sum+=i;alert(sum); //System.out.print(sum);}</script>                


2、 JavaScript和Java的關係(瞭解)

ECMAScript

*JavaScript和Java一點關係都沒有(雷鋒和雷峰塔)

*JavaScript和Java的區別:

>JavaScript代碼可以直接在瀏覽器執行,而Java必須先經過編譯才能執行

>JavaScript是弱類型語言,Java是強型別語言

強型別語言:要求變數的使用嚴格符合定義。(例如:變數聲明後都有一個固定的地區,int地區大小是32位)。編程時痛苦,調BUG時舒服

弱類型語言:不要求變數的使用嚴格符合定義。(例如:變數聲明後沒有一個固定的地區,任何類型的值都能放在該地區)。編程時舒服,調BUG時痛苦

<script>

var sum = 0;

for(var i = 1; i <= 100; i++) {

sum += i;

}

alert(sum);

</script>

二、JavaScript文法及使用(重點) 注釋

*單行注釋

//

Myeclipse快速鍵ctrl+shift+c

*多行注釋

/* */

Myeclipse快速鍵ctrl+shift+/

變數

*標示記憶體中的一塊空間,用於儲存資料,資料是可變的

*格式:

var 變數名= 變數值;

JavaScript中的變數聲明都用var關鍵字

變數值的資料類型(未經處理資料類型和引用資料類型)

>未經處理資料類型:

string 字串類型

“”和’’都表示字串

boolean 布爾類型

true,false

number 數字類型

整數和小數

null 空,表示參考型別的對象不存在

undefined 未定義

變數聲明未賦值時使用/對象的屬性未賦值時使用

註:變數就像一個盤子,什麼都能盛裝。

變數的類型可以用typeof()來判斷。例如:var str=”aa”;alert(typeof(str));//string

變數的大小寫是敏感的,yy和YY不是一個變數。

為什麼 typeof 運算子對於 null值會返回 "Object"。這實際上是JavaScript 最初實現中的一個錯誤,然後被ECMAScript 沿用了。現在,null被認為是對象的預留位置,從而解釋了這一矛盾,但從技術上來說,它仍然是原始值。

      demo1.html                    <script type="text/javascript">/* var 變數名=變數值;未經處理資料類型:string字串""  ''都表示字串boolean布爾類型true , falsenumber數字整數和小數null空,對象為空白(引用為空白)undefined未定義  變數沒有賦值就使用/使用 對象.屬性 的時候,屬性沒有賦值就使用//變數就是一個盤子,裝什麼東西都可以引用資料類型:typeof()  幫咱們判斷變數是什麼類型的變數名命名是大小寫敏感的(區分大小寫)*//* var str = "aa";var str2 = 'aa';var str3 = true;//falsevar str4 = 15;var str5 = 15.55;var date = null;var aa;str =15;str = true;str = "aa";alert(str);//aa 15 *//* var str = "aa";str =15;//number//str = true;//booleanvar ss;var obj= null;alert(typeof(obj)); *//* var sf="aa";alert(Sf); *//* 引用資料類型常用對象:String,Array,Date,Math,RegExpObject 所有對象的父物件*/var date = new Date();alert(date instanceof Object);</script>                


>引用資料類型(瞭解)

即對象

例如:var obj = new Object();

常用對象:

String,Array,Date,Math,RegExp

註:instanceof可以用來判斷對象是否屬於某類型。返回true和false .例如:

Var str = new String();

Alert(str instanceof String);//true

*兩種變數:

>全域變數

就是在<script>標籤中定義的變數,在整個頁面都有效

>局部變數

就是在函數體內定義的變數

      demo1.html                    <script type="text/javascript">/* 全域變數就是在script標籤中的變數,對整個頁面都有效局部變數就是在函數體中定義的變數*//* var str =10;for(var i=1;i<=3;i++){}alert(i);//4 *//* function aa(){var a=5;alert(a);} */var x = 4;function show(x){x = 8;}show(x);alert("x = "+x);/* A.8   B.4   C.undefined */</script>                

練習:如下代碼顯示X值是多少?

var x = 4;

function show(x){

x = 8;

}

show(x);

alert("x = "+x);

A.8

B.4

C.undefined

函數(方法)

*用於代碼封裝,提高複用性

*格式function 函數名(參數列表){

函數體;

return ;

}

*函數定義,關鍵字function

*定義參數列表時,不必使用var關鍵字,否則報錯

*如果沒有需要返回的參數,return可以不寫

*函數需要調用才能執行,和Java一樣。

*JavaScript不存在重載形式:

>每個JavaScript中,都存在一個數組arguments,用於儲存參數列表

思考:如下調用方法會列印輸出什麼效果?

function getSum(){

return 100;

}

var sum = getSum;

alert(sum);

A.100

B.undefined

C.function getSum(){return 100;}

*如果調用方法時忘記加(),那麼會把函數對象的引用傳給變數

      函數.html                    <script type="text/javascript">//用來做加法的方法  a b  a+b/* public int sum(int a,int b){return a+b;} *///JavaScript不定義傳回值的類型//javascript 方法不存在重載//因為在JavaScript方法中存在arguments隱藏對象(數組),就是用來擷取傳進來的參數列表的//JavaScript中如果調用方法不加括弧,那麼會把方法(對象)的引用傳出來/* function sum(a,b){alert(arguments.length);alert(arguments[0]);alert(arguments[1]);alert(arguments[2]);// alert(a);// alert(b);}sum(5,6,7); */function getSum(){return 100;}var sum = getSum;alert(sum);</script>            

*兩種擴充函數:

>動態函數(瞭解會用)

通過JS的內建對象Function來動態建立

格式: new Function(參數一,參數二);

參數一是函數形參列表

參數二是函數體

>匿名函數(較常用)

沒有名稱的函數,函數的簡化形式

格式:var str = function(參數列表){

函數體;

return;

};

      demo1.html                    <script type="text/javascript">/* 動態函數(使用比較少)Function 對象匿名函數*//* var par = "a,b,c";var par2 = "return a+b+c";var str =new Function(par,par2);alert(str(1,2,3)); */var str=function(a,b){return a+b;};alert(str(1,2));</script>                

運算子

算術運算子(常用)

+號除了運算外,可以作為串連符

-號除了運算外,可以作為轉換符

alert(true + 1); // 2

比較子(常用)

== 比較值

=== 又比較值和類型語句(流程式控制制語句)

      demo1.html                    <script type="text/javascript">/* 算術運算子+串連符-轉換符NaN意思是不是數字比較子==只是比較值,即使類型不同也沒關係===不僅比較值,也同時比較類型*//* var str=15;var str2="1";alert(str+str2);//151 *//* var str =15;var str2 = "1";alert(str-str2);//14 151 */ /* var str= 15;var str2="a";alert(str-str2);//NaN *//* var str=8;//alert(str==8);//true//alert(str=="8");//truealert(str===8);//truealert(str==="8");//false *//* var str = (8==8)?8:0;alert(str); */</script>                

流程式控制制語句

對程式運行流程式控制制的運算式

n判斷語句

IF

if(8 == num){

賦值的問題,需要注意。

}else{

}

0、-0、null、""、false、undefined或 NaN,為false

否則為true

和Java中一樣。

switch(n)

{

case 1:

執行代碼塊 1

break

case 2:

執行代碼塊 2

break

default:

如果n即不是1也不是2,則執行此代碼

}

練習:以下代碼輸出結果為:

var a=15;

if(a=15){

alert(15);

}else{

alert(“else”);

}

A.15

B.Else

n迴圈語句

For迴圈(較常用)

for(var i=0;i<=8;i++){

// 迴圈體

}

增強FOR迴圈(不靈活,使用少,但開發中會有使用)(瞭解會用,工作中自己進行嘗試即可)

for(變數in 對象){

// 迴圈體

}

*裡面的變數代表下標

*使用in關鍵字

*遍曆數組(或對象),裡面要用數組[下標]

* 例如:

Var s= new Array();

s[0]=1;

s[1]=2;

for(x in s){

alert(s[x]);

}

while(運算式){

// 迴圈體

}

      demo1.html                    <script type="text/javascript">/* 判斷語句IF0、-0、null、""、false、undefined 或 NaN,為false否則為true FOR迴圈var 99乘法表while do while增強for*//* function str(){return null;}var x=8;var aaaa=str();if(aaaa){alert(1);//1}else{alert("else");} *//* for(var i=0;i<3;i++){} *//* if(-0){alert(1);}else{alert("eeee");} */var i=new Array();i[0]=1;i[1]=2;for(x in i){alert(i[x]);}</script>                



對象

lString對象(瞭解會用)

* var str = "abc";

* var str = new String("abc");

* 屬性:length 字串的長度

* 方法

* 和java中String對象類似的方法(基本相同,需要練習)

* charAt(index) 返回指定位置的字元(常用)

* indexOf(searchvalue,fromindex) 檢索字串

* lastIndexOf() 從後向前的

* replace() 替換字串(較常用)

* substring(start,stop) 從哪開始,到哪結合(包含開始不包含結束)

* substr(start,length) 從哪開始,截取長度

      demo1.html                    <script type="text/javascript">/* String對象var s = new String("aaa");var s = "aaa";document.write();//會把值輸出到瀏覽器頁面上*//* var str ="abc";var str2 ="你好麼";document.write(str2.blink());document.write(str2);document.write(str.charAt(1)); */var str = "ABC";document.write(str.toLowerCase());</script>                


lArray對象(重要)

* js的數組

* var arr = [1,2,3];

*var arr = new Array();數組長度預設為0

* var arr = new Array(4); 數組長度是4

* var arr = new Array(1,2); 數組元素是1,2

* 數組的長度

* length

* 數組的長度是可變的

*數組元素可以是任意類型(注意)

* 方法

* concat() 連結數組或者元素都可以(較少)

* join(separator) 轉化成字串

* push() 向末尾添加一個元素,返回新的長度

      demo1.html                    <script type="text/javascript">/* Array對象var str = [1,2,3]; 長度是3,長度可變var str = new Array();長度預設是0,長度可變var str = new Array(5);長度預設是5,長度可變var str = new Array(1,2);長度是2,長度可變join(分隔字元)  預設是 push   就是把元素添加進數組末尾*//* var str=[1,2,3];var str2=[4,5,6];alert(str.concat(str2)); *//* var str2=[1,2,3];var str=str2.join();alert(str); */var str2=[1,2,3];var str=5;str2.push(str);alert(str2);//</script>                


lDate對象(比較常用)

* var date = new Date(); 當前的時間

* toLocaleString() 根據本地的日期格式轉化成字串(瞭解)

* getDate() 返回一個月中的某一天(瞭解)

* getMonth() 擷取月份(0-11)(瞭解)

* getFullYear() 擷取年(瞭解)

* getTime() 擷取毫秒數(比較重要)

* setTime() 通過毫秒數設定日期(比較重要)

同時也可以通過構造器設定new Date(毫秒數);

* Date.parse(datestring) 解析字串,返回毫秒數(重要的)

* 2015-4-29 解析不了

* 2015/4/29 是可以解析的

lMath對象(瞭解)

round(x) 四捨五入

random() 隨機產生0~1數字

      demo1.html                    <script type="text/javascript">/* Date對象var aa = new Date();*/var aa = new Date();// alert(aa.toLocaleDateString());/* alert(aa.getDate());alert(aa.getMonth());alert(aa.getFullYear()); *//* var long1 = aa.getTime();var long2=long1-(1000*60*60*24);aa.setTime(long2);alert(aa.toLocaleString()); */var bb = Date.parse("2015/5/21");//aa.setTime(bb);var cc = new Date(bb)alert(cc.toLocaleString());</script>                


lRegExp對象(重要)

*正則對象 正確的規則

* var reg = new RegExp("運算式"); (開發中基本不用)

* var reg = /^運算式$/ 直接量(開發中常用)

直接量中存在邊界,即^代表開始,$代表結束

* test(string) (經常使用)符合規則返回true,不符合返回false

例如:

if(reg.test("12345")){

//

}else{

//

}

      demo1.html                    <script type="text/javascript">/* RegExp對象var s = new RegExp("運算式");var s = /^運算式$/;test()*/var reg = /^\s*$/;//驗證空var checkText = "";alert(reg.test(checkText));</script>                

練習:判斷字串是否為空白

var msg=””;

var reg = /^\s*$/;

alert(reg.test(msg));

l全域函數

Global

瀏覽器記憶體中游離的函數,直接拿過來用。

eval() 可以解析字串,執行裡面的javascript的代碼(學習JSON)(最常用)

isNaN() 是否不是 數字 (常用)

encodeURI() 編碼

decodeURI() 解碼

(不用看)escape不編碼字元有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z

(瞭解)encodeURI不編碼字元有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

(瞭解)encodeURIComponent不編碼字元有71個:!,',(,),*,-,.,_,~,0-9,a-z,A-Z

三、JavaScript和HTML的結合方式(瞭解)

l兩種使用方式

>內部使用

*<script type=”text/javascript”>JavaScript的代碼</script>

>外部參考

*<script type=”text/javascript” src=”javascript檔案路徑”></script>

*外部參考時script標籤內不能有script代碼,即使寫了也不會執行

注意:<script>標籤寫在任意地方都可以,但是要注意HTML和JAVASCRIPT的載入順序

在網頁載入完畢後做什麼事

      demo1.html                    <script type="text/javascript" >function aa(){alert(document.getElementById("a").innerHTML);//列印 你好啊alert("1");alert("2");}</script>          你好啊      

四、JavaScript的組成(瞭解) JavaScript的組成

*ECMAScript (核心)

*DOM 文檔物件類型

*BOM 瀏覽器物件類型

練習:

1、99乘法表

2、2015-01-01到2015-09-01有多少天

1、答案

<script type="text/javascript">

for(var i=1;i<=9;i++){

for(var j=1;j<=i;j++){

document.write(j+"*"+i+"="+j*i+"\t");

}

document.write("
");

}

</script>

2答案:245

<script type="text/javascript">

var dlong1=Date.parse("2015/01/01");

var dlong2=Date.parse("2015/09/03");

alert((dlong2-dlong1)/1000/60/60/24);

</script>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.