# JS 基礎入門 ###### tags:`javascript` ## JS 環境與變數 ### 變數 #### 原始型別 - Number數字 - String字串("" / '') - boolean布林(true / false) - undefined(設了一個變數但沒有賦予值) - null - sybol #### JS 的執行過程 1. 建立出執行環境 會將變數的值暫存至瀏覽器的記憶體 變數會指向某個記憶體位置,其存放的是變數的值 若變數的值有變動,記憶體會再新增一個空間存放新的值 ![](https://i.imgur.com/409ksH0.jpg) Q1:幾個型別、幾個變數、產生過幾個記憶體位置 A:四個型別、一個變數、五個記憶體位置 > undefined也是一種型別,也會佔用一個記憶體位置 ```javascript= var a; //重新賦予新的值,不是修改 a = 1; a = 3; a = 'hello'; a = true; ``` Q2:幾個型別、幾個變數、產生過幾個記憶體位置 A:三個型別、兩個變數、五個記憶體位置 ```javascript= var a = 1; var b = 2; var b = 'qq';//新增一個記憶體空間存放'qq' //創造階段 var a;//會先有undefined的記憶體空間 var b; a=1;//新增一個記憶體空間存放1,a指向1 b=2;//新增一個記憶體空間存放2,b指向2 b='qq';//新增一個記憶體空間存放'qq',b指向'qq' ``` 2. 創造階段、執行階段 1. 解析程式碼(編譯) 2. 丟給Chrome執行 ![](https://i.imgur.com/559kDH3.jpg) ## JS 函式與監聽 ### DOM(文件物件模型) #### 結構樹 ![](https://i.imgur.com/Edwkxw7.png) - 方便JS選取 - 方便CSS渲染、對應標籤 #### 透過JS選取 / 修改資料 ```javascript= document.querySelector(".header").textContent = "呵呵"; //選取該網頁文件,找到裡面的 .header,新增文字,賦予值 呵呵 document.querySelector(".header").textContent; // 抓出文字內容 var str = document.querySelector(".header").textContent; //將此文字內容當作變數的值 ``` #### 透過JS動態加入資料 ```javascript= document.querySelector(".header").classList.add('active') //在 .header上新增一 class,名稱為 active document.querySelector(".header").setAttribute('style','color:red') //增加屬性,(屬性名稱,值) ``` #### 透過JS賦予值 ```javascript= document.querySelector(".header").innerHTML='<h1>520</h1>'; //賦予值 使用= //document.querySelector(".header").innerHTML 為取得值 var _headerHTML = document.querySelector(".header").innerHTML; //將取出的值當作變數的值 //<h1>520</h1> ``` #### 將DOM放到記憶體空間(當作變數) ```javascript= var element = document.querySelector(".header"); element.innerHTML='<h1>520</h1>'; element.textContent = "呵呵"; //節省開發時間 ``` ### 函式(function) 宣告函式 ```javascript= function 函數名稱(參數){ 指令 } ``` 舉例:兩個數字加法計算機 - 找出變因 - 哪些東西會變來變去 - 要回傳什麼東西 ```javascript= function sum(num1,num2){ return num1+num2; } var a = sum(3,3);//a = 6 ``` - 函式會存放於記憶體中 - 但函式結果會當作一個(賦予變數的)新值>存放於新的記憶體 ![](https://i.imgur.com/beJCnV4.jpg) 參數 不等於 變數 ```javascript= function sum(num1,num2){ return num1+num2; //參數只活在此函式裡面,執行完即消失。 } console.log(num1);//找不到 ``` #### 區域變數 在函式裡設變數,則此變數只在韓式範圍內有效,執行完即消失。 例如: ![](https://i.imgur.com/QK85WZA.jpg) 上圖中,變數total只在紅框框內有效 ```javascript= console.log(friesPrice);//40 console.log(total);//找不到 ``` 而friesPrice與hambugerPrice為全域變數,即使在函式裡也可使用的變數。 ### 監聽 JS內建函式:.addEventListener ```javascript document.querySelector(".send").addEventListener("監聽動作", function(){ 觸發後效果 }) ``` 例如 ```javascript document.querySelector(".send").addEventListener("click", function(){ }) ``` 可使用Chrome > 檢查 >Event Listener 來看網頁元件的監聽事件是什麼 ![](https://i.imgur.com/rDRljnV.jpg) :::info 常見監聽事件 - onclick:當使用者產生點擊某元素時,例如選擇某的選項或是按鈕(button)。 - onchange:當元素發生改變時,例如選擇下拉選單(select option)中的其他項目時。 - onblur:當游標失去焦點時,也就是點選其他區域時,通常用於填完表單的一個欄位。 - ondblclick:連續兩次 click 某特定元素,通常用於需要特定確認的情況。 - onfocus:當網頁元素被鎖定的時候,例如 textarea、input text。 - onload:當頁面載入完成後立即觸發 function。 - onmousedown:滑鼠事件,當滑鼠的按鍵被按下的時候。 - onmouseover:滑鼠事件,當滑鼠游標移經某個元素或區塊時。 - onmousemove:滑鼠事件,當滑鼠游標移動時。 - onmouseout:滑鼠事件,當滑鼠移出某個元素或區塊時。 - onmouseup:滑鼠事件,當滑鼠的按鍵被放開的時候。 - onunload:當網友要準備離開網頁的時候。 :::
{"metaMigratedAt":"2023-06-15T09:34:01.869Z","metaMigratedFrom":"Content","title":"JS 基礎入門","breaks":true,"contributors":"[{\"id\":\"4a3bce37-8ac0-4beb-82dc-c1f9a9a32f39\",\"add\":3284,\"del\":84}]"}
Expand menu