1. 程式人生 > >JavaScript複習筆記(一)

JavaScript複習筆記(一)

1、JavaScript用來做什麼

HTML:專門編寫網頁內容的語言

CSS:專門美化網頁內容樣式的語言

JavaScript:專門編寫互動程式的語言

JavaScript包含三個方面:ECMAScript標準+DOM標準+BOM

2、常用語句

在控制檯中輸出一段話    console.log(“Hellow World”);

    在當前網頁中輸出一段話  document.write(“Hellow World”);

    在彈出的警告窗中輸出一段話 window.alert(“Hellow World”);

    在彈出的警告窗中輸出“請輸入”,並且建立一個輸入框獲取輸入的資訊

                         window.propt(“請輸入”);

3、在網頁中編寫js指令碼程式:3處

①<script>元素中:

    直接編寫在<script>中的js程式,隨網頁載入過程解釋執行

②單獨js檔案儲存js指令碼程式:2步:

           1. 建立.js檔案,儲存js指令碼程式

           2. <script src="url"></script>引入外部js檔案

      指令碼程式:不需要預編譯,邊解釋邊執行的程式

③元素的事件處理程式中編寫           

不隨網頁載入過程執行,只有觸發事件時,才執行。

4、變數

①使用變數的流程:宣告,賦值,取值

②僅宣告未賦值的變數,預設值自動是undefined

③為一個未宣告過的變數賦值,不會出錯!會自動建立同名變數(全域性變數),再儲存資料

④嘗試從一個未宣告過的變數中取值:會出錯! ReferenceError:未找到或未定義

⑤宣告提前:在程式正式執行前,都會將所有var宣告的變數提前到開始位置(函式內變數提前到函式開始位置),集中建立 ,***賦值留在原地***

  console.log(a);  //undefined  宣告提前,雖有宣告,但是還未賦值

  var a=100;

console.log(a);  //100

  var a=200;

console.log(a);  //200

5、資料型別

① js中資料型別包括原始型別和引用型別兩種,

②原始型別:值儲存在變數本地的資料型別

5+1種:Number 專門儲存數字的型別

          String 專門儲存字串的型別

          Boolean 專門儲存真/假二選一的型別

          undefined 只有一個值undefined

          null 表示不指向任何地址

          symbol 用來定義物件的唯一屬性名(ES6新增)

③引用型別:值不儲存在變數本地的資料型別,變數中只是儲存地址,當地址中儲存的值改變時,引用型別的值也會發生變化

6、Number型別:專門儲存數字的型別,不加引號

①所佔空間:64位二進位制數儲存(64Bit=8bytes、1KB=1024byte)

數字所佔空間和數值大小無關,所有數字都佔8位元組

②n.toFixed(m):將n按m位小數四捨五入  // var n=3.1415;n.toFixed(2)   結果"3.14"

③NaN(Not a Number):NaN與任何資料做運算結果都為NaN,屬於Number型別的資料

7、String型別:專門儲存一串字元的序列,必須帶引號

①所佔空間:js的程式記憶體中的字元都是用unicode標識的

每個字母、標點:1位元組     每個漢字:2位元組

② +:如果參與+運算的值中包含字串型別資料,+法運算自動變為字串拼接!

   b1=true,n2=3,s3="3";

console.log(b1  +   n2   +   s3);

             true  +   3   +  “3”

                  4       +   “3”

                        “43”

8、Boolean型別:只有兩個值true/false。

如果表示二選一的值時,就用Boolean型別,用於比較結果或當做判斷條件時

9、資料型別:隱式轉換

①算數計算時隱式轉換

 算數計算中,一切型別都隱式轉為number型別,再計算

"2"-->2   true/false-->1/0

特例:+(只有+的時候)運算中,只要有一方是字串,兩資料都轉為字串,且+運算變為字串拼接!

②當做為判斷條件時隱式轉換

   一切型別都隱式轉為Boolean型別

  “”,undefined,null,NaN,0這五個隱式轉換為 false,其餘都隱式轉換為true

  例    if("false"){console.log("Hellow")}else{console.log("Baybay")}

輸出為Hellow,因為"Hellow"是不為空的字串,轉換為true

③隱式轉換,僅影響表示式的運算結果,不影響變數中儲存的實際值

10、資料型別:顯式轉換

例:parseInt(true);輸出結果 NaN

 首先parseInt(str)是用來將字串轉為數字的,true將先被進行隱式轉換,執行String(true)方法將Boolean型true變為String型”true”,再執行parseInt(”true”),最終得NaN

11、運算子

① % 取餘       5%2==1         5/2==2餘1  

② ++將當前變數中的值遞加1      

難點:n++與++n的區別

var a=10;

var b=a++;

console.log("a:"+a,"b:"+b);// a:11 b:10

var a=10;

var b=++a;

console.log("a:"+a,"b:"+b);// a:11 b:11

無論是a++還是++a,最終的a值都是加了1,所以a都為11,但是b=a++時是先將a值賦給了b,再自加一,b=++a時是先自加一,此時a=11,再將a值賦給了b,b也為11

③+=:a+=b等於a=a+b

12、關係運算:將兩個值作比較 > < >= <= == !=

  只能返回兩個值之一:如果成立,返回true;否則返回false

  隱式轉換:將所有型別都轉為number型別,再比較!

3種特殊情況

     ①兩字串做比較:依次PK每一位字元的unicode編號

            只要有一位字元,分出大小,就不再比較

        比如:"3">"10" -->true      "Smith">"Scott" -->true

     ② NaN: NaN和任何資料做大小或等於比較永遠返回false

             NaN和任何資料做*不等於*比較,永遠返回true

        isNaN(num):專門判斷num是否是NaN              isNaN(f);//先隱式轉換 true

                  如果是NaN返回true,否則返回false    isNaN(1);//false

判斷一個數值是否是數字或能否被轉為數字,都用isNaN。如果是數字,返回false!否則返回true

     ③ undefined 與 null

        undefined == null //true         undefined === null//false

            ==:相等,值相等即可,可以有隱式轉換

           ===: 全等:資料型別要相同,再比較值是否相等

undefined和null與任何有意義的值比較返回的都是falsenull與undefined在與其他數相等運算時不進行型別轉換

13、邏輯運算與位運算

①隱式型別轉換:自動將每個條件轉為Boolean型別,用來比較,如果要輸出,輸出的還是最初的資料, &&:必須都為真才為真,||:一個為真就為真,  ^:異或,不同為1,相同為0

console.log(4&&false); false

console.log(false&&4);false

console.log(false&&0); false

console.log(5&&4);   4

console.log(4||false); 4

console.log(0||false);false

console.log(5||4);   5

  *當邏輯運算子執行了一個條件後,如果已經完成了自己的使命,那麼就停止下來,輸出*

console.log(4&&false); false//4條件為真,未完成&&使命,繼續判斷false條件,無論真假,都能完成使命,輸出最後判斷條件的值

console.log(false&&4);false//false條件為假,可以完成&&使命,輸出最後判斷條件的值

console.log(0||false);false//0條件為假,不能完成||使命,繼續判斷false條件,無論真假,都能完成使命,輸出最後判斷條件的值

console.log(4||false); 4//4條件為真,可以完成||使命,輸出最後判斷條件的值

③短路邏輯:如果前一個條件已經可以得出結論,則後續條件不再執行!

例:消費滿100就打8折    totle>=100&&(total*=0.8);

14、三目運算(最簡單的三目運算 var max=a>b?a:b;結構為:條件1?值1:預設值;)

三目運算結構

  條件1?值1:

 條件2?值2:

     … ? … :

     預設值;

score>90?”A”:

score>80?”B”:

score>=60?”C”:

    “D”;