1. 程式人生 > 其它 >JavaScript學習筆記-1

JavaScript學習筆記-1

1. JS編寫位置

(1)在標籤的屬性中(屬於結構與行為耦合,不推薦使用)

<button onclick=" alert('在這裡'); ">點我看看</button>
<a href=" javascript: alert('在這裡'); ">點我看看</a>

(2)在script標籤中 (在<head>或<body>中)

<script>
    alert("我在這裡");
</script>

(3)外部js檔案

// html檔案中引入js檔案 
<script type="text/javascript"
src="./test.js"></script>


2. 格式

  • 註釋:/* */
  • JS嚴格區分大小寫
  • JS以分號結尾
  • JS會忽略多個空格和換行

3. cookie 和 session

  • cookie 資料存放在客戶瀏覽器上,session資料放在伺服器上
  • cookie不安全,儲存的資料不能超過4k,很多瀏覽器都限制一個站點最多儲存20個cookie
  • session在一定時間內儲存在伺服器上。訪問增多,會比較佔用伺服器的效能

4. 字面量和變數

  • 字面量:不可改變的值,如1,2,3。可以直接使用,但一般不直接用
  • 變數:可用來儲存字面量
  • 宣告變數用 var ,未賦值顯示undefined。如 var a = 123;

5. 識別符號

  • 可以由我們自主命名,例:變數名、函式名、屬性名
  • 命名規則
    • 可以含有字母、數字、“_” 、“$”
    • 不能以數字開頭
    • 不能是ES中的關鍵字或保留字
    • 一般採用駝峰命名法

6. 資料型別

(1)String:用單引號或者雙引號均可,但不可以巢狀使用,如 var a = "today";

(2)Number:超過最大/最小值時返回 Infinity 或 NaN(Not a Number)。若 a =Infinity 或NaN ,a均為Number型別。整數運算基本可以保證精確,浮點數可能不精確

(3)Boolean

(4)Null:var a = null; 定義空物件,typeof返回Object

(5)undefined:var a; 或 var a = undefined; 為未賦值返回undefined

(6)Object

PS:typeof 返回檢查型別( console.log(typeof(a)) )

7. 強制轉換

  • string轉換
    • String(a);  // Number 和Boolean 使用String() 相當於呼叫toString方法,而 null 和 undefined 是直接轉換成字串“null”和“undefined”
    • a.toString();  // null 和 undefined 沒有toString方法,會報錯
  • number轉換
    • Number(a);
      • 字串 => 數字①"123" => 123 ②非數字(如 "123px")=> NaN ③空串或空格串 => 0
      • Null => 數字 為 0
      • Undefined => 數字 為 NaN
    • parseInt();
      • 將字串轉為整數,"123.3px" =>123,"b12p" => NaN。parseInt( a, 8 ) 中第二位8表示八進位制
    • parseFloat();
      • 將字串轉為浮點數,"123.3px" => 123.3
  • Boolean轉換
    • 數字除了 0 和 NaN,其餘均為true( 包括Infinity也為true )
    • 字串除了空格其餘均為true
    • null 和 undefined 均為false
    • 物件型別也為true
  • PS:parseInt 和parseFloat 對非String型別使用會先轉為String型別再進行轉化,即 null => NaN

8. 其他進位制

  • 十六進位制:0x開頭
  • 八進位制:0開頭
  • 二進位制:0b開頭(非所有瀏覽器都支援)

9. 算術運算子

  • +(加)、-(減)、*(乘)、/(除)、%(取餘)
  • +:
    • 非數字轉為數字,false+true = 0+1 = 1
    • 任何值和字串相加,均轉為字串,再做拼串處理
    • 任意的資料型別 +“”,均轉為String型別
  • 除了加法轉字串,其餘運算子字串均轉Number
  • 可以通過一個值 -0,*1,%1,/1轉換為Number型別,原理同Number(),使用更加方便

10. 一元運算子

  • +(正)、-(負)
  • 正號不會有影響、負號取反
  • 對於非Number值,會轉成Number再算
  • 可以對其他資料型別用+轉為Number

11. 自增、自減

  • ++a
  • a++
  • --a
  • a--
  • ++ 或 -- 寫在變數前面是先自增後運算,寫在後面是先運算後自增
  • 例:var a = 20; console.log( a++ ); console.log( a ); 第一個輸出a的值為20,第二個為21
  • 例:var a = 20; a = a++ + ++a + a; a的值為64

12. 與(&&)或(||)非(!)

  • 運算時先轉為布林值,再運算,並返回原值
  • &&
    • true + true = true,返回後面的值,如 a = 5 && 6; a=6
    • false + false = false,返回前面的值,如 a = NaN && 0; a=NaN;
    • true + 其他,必然返回第二個值
    • false + 其他,必然返回第一個值
  • ||
    • 如果第一個值為true,必然返回第一個值
    • 如果第一個值為false,必然返回第二個值

13. 關係運算符

  • > < == >= <= != === !==
  • 若兩邊均為字串,一個字元一個字元比較
  • PS:undefined == null => true,因為 undefined 衍生自 null
  • 可以通過 isNaN() 來判斷是否為NaN,NaN不和任何值相等,包括他本身

14. 語句塊

  • 可以用 { } 來為語句分組,稱為程式碼塊。要麼一起執行,要麼一起不執行
  • 程式碼塊只有分組作用,不會影響內外情況