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

JavaScript學習筆記(1)

簡介

JavaScript是目前web開發中不可缺少的指令碼語言,js不需要編譯即可執行,執行在客戶端,需要通過瀏覽器來解析執行JavaScript程式碼。

作用

  1. 動態的修改html及css的程式碼(修改的是瀏覽器記憶體中的那一份程式碼)
  2. 對錶單進行校驗

特點:

  1. 互動性(它可以做的就是資訊的動態互動)
  2. 安全性(不允許直接訪問本地硬碟)
  3. 跨平臺性(只要是可以解析js的瀏覽器都可以執行,和平臺無關)

JavaScript和Java有何區別?

JavaScript Java
Netscape公司的產品,最初叫Livescript Sun公司的產品,現在是Oracle公司的產品
直譯式指令碼語言 需要先編譯成位元組碼檔案,再執行
弱型別語言 強型別語言

JavaScript建立

一、內嵌式 直接寫在html檔案內部,通過一個標籤對來包裹一個範圍,理論上js可以書寫在頁面的任意位置。 alert(); 彈出一個警告框,呼叫的是瀏覽器的元件,所以不同瀏覽器的樣子是不一樣的。 案例程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>內嵌式</title>
    <script>
        alert("恭喜您中了 500 萬現金大獎!!!")
    </script>
</head>
<body>

</body>
</html>

執行結果: 在這裡插入圖片描述

二、外鏈式

首先新建一個檔案型別為.js的檔案,然後在該檔案中寫js語句,通過script標籤對引入到html頁面中。 ex1.js檔案內容:

alert("恭喜您又中了 5000 萬");

案例程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>內嵌式</title>
    <script src="../js/ex1.js"></script>
</head>
<body>

</body>
</html>

執行結果: 在這裡插入圖片描述 三、行內式 直接書寫在標籤身上,是一個簡寫的事件,所以又稱之為事件屬性。 這個方法有兩點需要注意:

  1. 不會主動執行,需要條件觸發!
  2. 單雙引號必須交替使用! 案例程式碼1:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外鏈式</title>

</head>
<body>
    <button onclick="alert('恭喜你,被騙了 500 萬!')">點我啊!</button>
</body>
</html>

執行結果: 在這裡插入圖片描述 案例程式碼2:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外鏈式</title>

</head>
<body>
    <!--<button onclick="alert('恭喜你,被騙了 500 萬!')">點我啊!</button>-->
    <input type="button" value="點我啊" onclick="alert('恭喜你,又被騙了 5000 萬!')">
</body>
</html>

在這裡插入圖片描述

JavaScript中的資料型別

數值型:number(凡是數字都是數值型,不區分整數和小數) 字串:string(凡是引號包裹起來的內容全部都是字串) 布林:boolean(true、false) 物件型別:object(特殊取值null) 未定義型:undefined

這和Java存在很大的不同!

JavaScript中的變數

宣告方法

var 變數名稱 = 儲存的資料;

變數命名規則:和Java一樣

  1. 只能由字母、數字、_(下劃線)、$(美元符號)組成。
  2. 不能以數字開頭。
  3. 命名中不能出現-(js會理解成減號進行減法的操作),不能和關鍵字衝突。 雖然沒有給變數設定資料型別,但是js會根據實際情況判斷變數的實際資料型別。

舉例:

數值型:var i =10; var i = 1.2;
字串型別:var s = "這是js字串";
布林型別:var s = true;

案例程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>資料型別</title>
    <script>

        var a;
        alert(typeof a);

        a = 998;
        alert(typeof a);

        a = "用心做教育";
        alert(typeof a);

        a = true;
        alert(typeof a);

    </script>

</head>
<body>

</body>
</html>

執行結果: 1. 在這裡插入圖片描述

2.在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

JavaScript算數運算子

  •   *		/		%		++		--
    

和Java類似,但是需要注意的是:

  1. 由於js中數字不存在型別區分,所以不存在整數除以整數結果還是一個整數的說法。
  2. 字串和其他的資料使用+號運算,會連線成一個新的字串。
  3. 字串使用除了+以外的運算子:如果字串本身是一個數字,那麼會自動轉成number進行運算,否則就會返回一個NaN的結果,表示這不是一個數字。

案例程式碼及結果:

<script>

    // 請問1 : 1234 / 1000 * 1000, 結果為 ?
    alert(1234 / 1000 * 1000); // 1234

    // 請問2 : var s = “12”;  s -= 10;  alert(s);  結果為 ?
    var s = "12";
    s -= 10;
    alert(s);  // 2

    // 請問3 : var s = “aa”;  s -= 10;  alert(s);  結果為 ?
    var s = "aa";
    s -= 10;
    alert(s);  // NaN       Not a Number 不是一個數字

    var s = "12";
    s += 10;
    alert(s);       // 1210 

</script>

關係運算符

>		>=		<		<=  	!=		
==	等於(只比較內容)	
===	恆等於(比較內容的同時還要比較資料型別)

案例程式碼及結果

<script>

    // 請問1 : 3 > 5, 結果為 ?
    alert(3 > 5);   // false

    // 請問2 : “22” == 22  結果為 ?
    alert("22" == 22); // true  (僅僅判斷數值)

    // 請問3 : “22” === 22  結果為 ?
    alert("22" === 22);  // false  (恆等於, 數值和型別都要相等)
    
</script>

邏輯運算子:

&&	 	與		true&&false		====>false
|| 		或		true||false			====>true
! 		非		!true				====>false
false:false,  0,  null,  undefined 
true:true, 非0,  非null,  非undefined

案例程式碼及結果

<script>

    // 請問1 :  8 < 7 && 3 < 4, 結果為 ?
    alert(8 < 7 && 3 < 4);  // false

    // 請問2 :  -2 && 6 + 6 && null 結果為 ?
    alert(-2 && 6 + 6 && null); // null

    // 請問3 :  1 + 1 && 0 && 5  結果為 ?
    alert(1 + 1 && 0 && 5); // 0
    
    // 請問1 :  0 || 23 結果為 ?
    alert(0 || 23); // 23

    // 請問2 :  0 || false || true  結果為 ?
    alert(0 || false || true); // true

    // 請問3 :  null || 10 < 8 || 10 + 10結果為 ?
    alert(null || 10 < 8 || 10 + 10);  // 20

    // 請問4 :  null || 10 < 8 || false結果為 ?
    alert(null || 10 < 8 || false); // false


</script>

三元運算子

條件?表示式1:表示式2 如果條件為true,返回表示式1的結果 如果條件為false,返回表示式2的結果

此外,還有if語句,switch語句判斷語句和while、do while等迴圈語句,這些都和Java語法是一樣的。

自定義函式

函式:function 可以獨立封裝一段程式碼,當需要使用被封裝的功能時,可以去呼叫這個函式。

function 函式名(形式引數){函式體}
呼叫函式:函式名(實際引數);

注意:

  1. 函式只有被呼叫後才會執行;
  2. 如果函式需要返回值,直接使用return返回即可, 不需要考慮返回值型別。 案例程式碼:
<script type="text/javascript">

    // 定義一個函式 : function
    function demo2() {
        return 666;
    }

    // 呼叫函式 :
    alert(demo2());

</script>

執行結果: 在這裡插入圖片描述

  1. 如果函式需要傳遞引數,不需要指定引數的型別,直接使用變數名即可。 程式碼:
<script type="text/javascript">

    // 定義一個函式 : function
    function demo3(a, b) {
        return a + b;
    }

    // 呼叫函式 :
    alert(demo3(10, 20));

</script>

執行結果: 在這裡插入圖片描述

  1. 函式中沒有過載的概念,如果出現2個重名的函式名,後面的會把前面的覆蓋掉。 程式碼:
<script type="text/javascript">

    // 定義一個函式 : function
    function demo4(a, b) {
        alert("呼叫1...");
    }

   function demo4() {
       alert("呼叫2...");
   }

    demo4(10, 20);
    demo4();

</script>

執行結果: 在這裡插入圖片描述 在這裡插入圖片描述

匿名函式

匿名函式也就是沒有名字的函式

function(形式引數){函式體}
呼叫方式:將匿名函式賦值給一個變數,通過變數名呼叫函式
定義函式並賦值給變數:var fn = function(形式引數){函式體}
呼叫函式:fn(實際引數);

程式碼:

<script type="text/javascript">

    // 匿名函式 : 沒有名稱的函式
    var func = function(i, u) {
        alert(i + " love " + u);
    }

    // 呼叫函式 :
   func("柳巖", "小溫");

</script>

執行結果: 在這裡插入圖片描述

案例:輪播圖