JavaScript複習筆記(一)變量、數據類型和運算符

1、JavaScript用來做什麼

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

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

JavaScript:專門編寫交互程序的語言

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

2、常用語句

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

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

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

    在彈出的警告窗中輸出“請輸入”,並且創建一個輸入框獲取輸入的信息

                         window.prompt(“請輸入”);

3、在網頁中編寫js腳本程序:3處

①<script>元素中:

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

②單獨js文件保存js腳本程序:2步:

           1. 創建.js文件,保存js腳本程序

           2. <script src="url"></script>引入外部js文件

      腳本程序:不需要預編譯,邊解釋邊執行的程序

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

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

4、變量

①使用變量的流程:聲明,賦值,取值

②僅聲明未賦值的變量,默認值自動是undefined

③爲一個未聲明過的變量賦值,不會出錯!會自動創建同名變量(全局變量),再保存數據,當這個變量在函數中被賦值,那麼這個全局變量只有函數被引用後才能在全局函數中使用,否則會顯示錯誤

function a(){
b=4;
}
console.log(b);    //出錯
 

function a(){
b=4;
}
a();
console.log(b);  //輸出: 4

④嘗試從一個未聲明過的變量中取值:會出錯! 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"      // 注意* "3.14"是字符串類型  *

  var n=3.1415
  console.log(typeof (n.toFixed(2)));    // string

③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,因爲"false"是不爲空的字符串,隱式轉換爲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的區別

例1、

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

例2、

 

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

 

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

/*我還寫過一篇《JavaScript中判斷兩個值是否相等(各種情況)》,裏面介紹關係運算各種情況的更仔細*/

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

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

3種特殊情況

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

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

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

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

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

        isNaN(num):專門判斷num是否是NaN           isNaN(f);//f先隱式轉換爲number類型 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”;

15、typeof

用typeof可以檢測出變量的基本數據類型,但是有個特例,就是null的typeof返回的是object,這是個javascript的歷史bug。。。

typeof Symbol()    //"symbol"                      typeof Number()    //"number"

typeof String()    //"string"                          typeof Function()    //"function"

typeof Object()    //"object"                        typeof Boolean()    //"boolean"

typeof null    //"object"                            typeof undefined    //"undefined"

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章