發表文章

[Js] 關於全域變數

  scope 可以翻譯成 作用域 ,意即   variable能被調用的範圍 。 → 也就是說,如果一個variable不在當下執行的scope裡,對當前的scope來說根本看不到variable這個東西,所以沒辦法調用。 (補充: 在JS裡,所有的object和function也都是variable。) 而 scope 又分為 Global scope function scope Block scope  (ES6後新增) 1. Global Scope 只要一個variable宣告在所有的function之外,我們將variable稱為 global variable(全域變數)。 被宣告為global variable就會擁有Global Scope。 2. Function Scope 在JS裡, 每一個function都會有一個Function Scope。 而  被定義在function內部的variable,便不能在function外被調用 。 3. Block Scope 因為ES6新增了  let  和  const  , 這兩個 keyword 能建立  Block Scope 。 let 或 const 的宣告,只在{大括號}中有效,無法從{}外被調用。 (→  let ,  var ,  const 都有global scope和function scope,但只有 let 和 const 有block scope) {block scope}通常指兩種情況: 在if statement裡面 在for Loop裡面 若是不用let const 等方式宣告變數容易出BUG ~ 例如: function test ( a ){   number = 8 return number + a } console . log ( test ( 10 )) 這樣還是可以運作 但是程式碼一龐大起來就很容易出問題,所以還是要乖乖用const,let喔~ 同時在Global跟Function內設置變數的話 函式內的優先於全域變數

[Git] Github 更新後 Github page 不會改變

圖片
 今天遇到了奇妙的問題 推送更新過的程式碼成功 但是gitpage裡面的怎麼等就是不會更新 後來找到解方: 按下圖中的 good first issue  就可以了 參考資料: https://reurl.cc/RXXyXD

[Js] 關於try 跟 catch

  MDN網站內稱為例外處理,使用方式如下: try { 要做的事情 } catch(e) { 例外處理 } 會把try裡面的程式碼執行一次,遇到問題會跳轉到catch裡面,如果catch也有問題就會直接跳錯誤通知。 上面說到如果程式碼遇到問題會終止執行,而這個問題大部分都是我們在瀏覽器上看到的編譯錯誤,最常看到的錯誤有: js 的語法錯誤(SyntaxError),像是  Unexpected token. 。 變數名稱拼錯(ReferenceError),像是  xxx is undefined. 。 找不到 function(TypeError),像是  xxx is not a function 。 瀏覽器會將這些編譯成 Error 物件, 這個物件會被自動拋出(就算不加 throw 也會被拋出),終止編譯,然後我們就會看到網頁一片空白,開發者工具出現錯誤提示。 所以就算在 try catch 中不用 throw 丟出 Error 物件, catch 也能捕捉到。 再來看看throw MDN內對throw的說明如下: throw  語句將引發使用者定義的異常。當前函數的執行將停止(之後的語句將不執行),並且控制權將傳遞給調用堆疊中的第一個  catch  塊。如果調用方函數之間不存在塊,則程式將終止。 throw可丟出使用者定義的異常,然後停止執行函數(這點跟return下面來比較看看吧) return 也可以停止函數執行並回傳值,差別在於return 只能在function中使用 throw可以在任何地方使用 return 可以直接使用(會回傳undefined) throw不行 Finally: 可接在try catch後面,也可以不接,如果try catch裡面有return語法,會中斷然後在finally程式碼的最後面執行。

[js] 關於 js的 ...

... 在ES6的JS裡面叫做其餘參數 MDN的描述如下: 如果函式的最後一個命名參數以  ...  開頭,它會被視為一個陣列。該陣列的元素會被置於索引從  0 (含)到的  theArgs.length (不含)位置,並且被視為一個函式的參數。 則會把之後的參數全部蒐集起來,成為一個新的Array。 例如: let [ x, y, ...other] = [ 1, 2 ,3 ,4 ,5 ,6 ,7, 8, 9]; console.log( x, y, ...other);  會顯示 1 2  後面一個名為other的arry 包含剩下的3~9 參考資料: 其餘參數 - JavaScript | MDN (mozilla.org)

CSS 翻牌特效 關於不同瀏覽器

 最近在製作JS的翻牌記憶遊戲作品 搞了CSS翻牌特效搞一天 不論怎麼用   backface-visibility: hidden; 這段程式碼都沒辦法發揮功能,卡背都沒辦法消失 後來發現在Firefox要設定起始的牌面角度 transform: rotateY(0deg); 而在chrome edge 需要在parent element上面加上:   transform-style : preserve-3d ; 這樣才能發揮應該的效果喔~ 真的會被自己氣死 超蠢