Hi,大家好,我是Tony,是一個對於JavaScript有些概念的新手。
昨天的學習內容:[Day 29] JavaScript 實作練習- 製作碼表
https://ithelp.ithome.com.tw/articles/10348004
今天是鐵人發文挑戰的最後一天,
來跟大家總結一下這30天學習的內容總結。
一開始對於任何網路前端的概念完全不懂,
就問ChatGPT幫我整理出30天的JavaScript教程,
後來發現根本不太可靠,學習難度有點太高,不可行。
接下來就是在Youtube上面找到了彭彭老師的教學系列影片,
真的非常感謝彭彭老師的教學影片。
雖然他可能不知道自己偶然間收了我這一個學生,
但他真的是我在前端工程領域的引路人,真的感謝。
其中學習的內容包括:
了解HTML是什麼,以及開發工具Visual studio Code
知道前端工程主要有HTML(房子結構)、CSS(房屋裝潢)、JavaScript(屋內功能)的概念。
資料的形態:
數字(123可以數學運算)、
字串("代表文字"與'代表文字')、
布林值(特殊關鍵字,表達正確true與錯誤false,判斷式會用到)
空值(特殊關鍵字,代表 空、沒有 的概念,undefined、null)
物件(很多內容,後面會提到)
變數,可以儲存資料的空間,
宣告變數:let 變數的名稱=資料,let x=5
常數,不會改變的變數
宣告常數:const 常數名稱=資料,const hello="你好"
運算符號,可以對資料進行某種操作的符號。
算術運算:+、-、*、/、%(模運算:取餘數)...
指定運算(把資料放入變數):=、+=、-=、%=...
比較運算(比較資料大小、得到布林值):>、<、==、>=、
單元運算(對單一資料的運算):++、--、!(布林值反運算)...
邏輯運算:&&(且and)、||(或or)...
流程控制:就是安排程式之間互相作用的動作。
程式區塊:用{}大括號包起來的內容。
if判斷式:根據布林值決定,是否要執行程式區塊
if(布林值){
如果布林值為true,執行這個程式區塊
}
if(true){
console.log("我是對的");
}
if(布林值){
如果布林值為true,執行這個程式區塊
}else{
如果布林值為false,執行這個程式區塊
}
if(money<=100000){
console.log("領錢成功");
}else{
console.log("失敗,領取金額需小於十萬元");
}
if(布林值){
如果布林值為true,執行這個程式區塊1
}else if(布林值){
如果布林值為true,執行這個程式區塊2
}else if(布林值){
如果布林值為true,執行這個程式區塊3
}else{
如果布林值為false,執行這個程式區塊4
}
if(money<100){
console.log("小於100元不能領出");
}else if(money<=100000){
console.log("領錢成功");
}else{
console.log("失敗,領取金額需小於十萬元")
}
while(布林值){
如果布林值為true,執行這個程式區塊,
執行完畢後,跳到迴圈開頭,重新執行。
直到布林值為false,跳出迴圈。
}
while(n<3){
console.log(n);
n++;
}
for(初始化程式;布林值;每次迴圈時執行){
如果布林值為true,執行這個程式區塊,
執行完畢後,跳到迴圈開頭,重新執行。
直到布林值為false,跳出迴圈。
}
for(let n=0;n<3;n++){
console.log(n);
}
迴圈指令:只能在迴圈中使用的指令
break:強迫中斷迴圈
continue:強迫跳到迴圈開頭,忽略下面的程式,進入下一圈。
函式:包裝好的程式區塊
建立函式:
function 函式名稱(參數名稱列表){
函式內部的程式區塊
}
let test=function(msg){
console.log(msg);
}
呼叫函式:
函式名稱(參數名稱列表);
test();
function 函式名稱(參數名稱列表){
函式內部的程式區塊
return 回傳值;
}
//方法1 new Object()
let obj=new Object(); //直接在變數中放入物件
//方法2 使用JSON語法建立物件(用{}包住物件內的資料}
let obj1={成員名稱1:資料,成員名稱2:資料,...}
let obj2={
x:3,
y:4,
show:function(){
console.log(this.x,this.y);
}
};
let obj=new Object();
obj.x=3;
obj.y=4;
obj.show=function(){
console.log("Hello");
};
console.log(obj); //印出整個物件
console.log(obj.x+obj.y); //使用物件屬性做運算
obj.show(); //呼叫函式,在後面放上小括號()
let obj=new Object();
obj.x=3;
obj.y=4;
obj.show=function(){
console.log("this.x,this.y"); //引用這個物件中的x與y
};
new Array(); //建立空白陣列
[]; //用中括號建立空白陣列
let arr=[]; //將物件放入變數中
let arr=[]; //將物件放入變數中
arr.push(3); //將資料3推進編號0
arr.push(4); //將資料4推進編號1
//接續上方範例
console.log(arr[0]); //印出3
console.log(arr[1]); //印出4
//接續上方範例
console.log(arr.length); //印出2
<div id="content">這是一段文字</div>
<span id="keyword">這是一段文字<span>
第二步:在JavaScript程式中,
利用document.querySelector()方法,取得標籤物件。
範例:
let divElement=document.querySelector("#content")
let spanElement=document.querySelector("#keyword")
結合起來,取得標籤物件的操作如下:
<div id="content">這是一段文字</div>
<script>
let divElement=document.querySelector("#content")
</script>
<div 事件名稱="程式碼">我是標籤內文</div>
<button 事件名稱="程式碼">我是標籤內文</button>
<div onclick="change();">點擊</div>
<script>
function change(){
document.body.innerHTML="Hello";
}
</script>
HTTP 通訊協定
超文本傳輸協定(HyperText Transfer Protocol)
意思就是,透過網址,前端可以連線取得後端的資源。
使用fetch函式網路連線fetch函式,fetch函式是一種JavaScript內建的連線函式。
fetch(網址).then(function(回應物件){
console.log(回應物件)
})
//有兩種取得資料回應的方式
//方式1,純文字資料回應
fetch(網址).then(function(response){
return response.text();
});.then(functiondata){
console.log(data); //純文字資料
});
//方法2,JSON格式的資料回應
fetch(網址).then(function(response){
return response.json();
});.then(function(data){
console.log(data); //JSON格式資料
});
let 函式名稱=(函式的參數列表)=>{
函式區塊內的程式碼
return 回傳值;
};
let add=(n1,n2)=>{
let result=n1+n2;
return result;
};
//簡化後的箭頭函式 (用小括號)
let 函式名稱=(函式的參數列表)=>(回傳值);
let add=(n1+n2)=>(n1+n2);
解構賦值:兩個動作經常會放在一起操作
解構:把陣列或物件的資料拆開
賦值:將拆開的資料分別放入各別的變數
陣列的解構賦值:用中括號[]
let arr=[3,4,5];
let [d1,d2,d3]=arr;
let obj={x:3,y:4};
let {x,y}=obj;
let arr=[3,4,5,6,2];
let [d1,d2,...data]=arr;
console.log(data); //會印出陣列[5,6,2]
<script type="module" src="程式檔案名稱"></script>
//模組1 檔案名稱:lib.js
function echo(msg){
console.log(msg);
}
export default echo; //export default 資料
//模組2 檔案名稱:main.js
import echo from "./lib.js"; // import 資料 from "模組檔案路徑"
let name="我是一個肥大的程式";
echo(name);
let 目標物件=某個物件實體;
let ref=new Proxy(目標物件,{
get:function(目標物件,屬性名稱){
return回傳自定義的暑醒資料;
}
});
//原本的物件
let a={x:3,y:4,data:[1,2,3]}; //其中的data陣列就是第二層
//淺拷貝的方法
//方法1
let b={...a}; //使用其餘運算符號...進行淺拷貝
//方法2
let c=Object.assign({},a); //使用內建方式Object.assign(),進行淺拷貝
//原本的物件
let a={x:3,y:4,data:[1,2,3]};
//深拷貝的步驟
let str=JSON.stringify(a); //將物件結構字串化
let b=JSON.parse(str); //根據字串化的資料,重新建立物件結構。
以上就是這段時間的學習總結,
回頭一看,內容真的非常多。
JavaScript的基礎我也學到了一個段落,
由於前期為了快速進入JavaScript內容,
CSS的觀念幾乎還沒有學到,未來的學習會把CSS再學起來。
學習的速度不會再像這30天一樣這麼密集了,
但我會開始試著去找一些實作案例來練習,
就像是我前一天做的碼錶案例一樣,
希望未來我也能靠自己的實力寫出一個網頁出來!
以上就是目前我的計劃,
未來有更新學習內容也會持續發布在我的版面上,
希望大家有空也能來走走逛逛,
謝謝大家,雖然不是明天見了,但會再見的!
感謝分享,也被你的努力激勵到了!恭喜挑戰成功!
謝謝你~能夠鼓勵到你我也很開心!
接下來持續學習努力~一起加油。