[TOC] ## 2024/02/25 - ch10 使用變數的一般事項 從網路上的91推薦文中決定讀書會章節順序 ### 10.1資料認知 資料讀寫能力測試 資料類型有 - 原始 - 結構化 - 自定義 - 抽象 - 可變和不可變 ### 10.2 變數與宣告 解讀"變數""宣告"的意義 - 是否可以不宣告型別 - 宣告型別 - JavaScript的隱式宣告與強型別程式語言的明示宣告的差異 - Jess: python屬於隱性宣告 效能問題 所以會需要先確認型別後再引用此變數 python 目前有套件可以輔助撰寫code上的變數型別 JavaScript的特性「隱性轉型」 Ash分享 [[ 技術筆記 ] JavaScript|何謂強制轉型(coercion)以及如何作到轉換型別 ](https://medium.com/@sunnyhuang.sc/%E6%8A%80%E8%A1%93%E7%AD%86%E8%A8%98-javascript-%E4%BD%95%E8%AC%82%E5%BC%B7%E5%88%B6%E8%BD%89%E5%9E%8B-coercion-%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E4%BD%9C%E5%88%B0%E8%BD%89%E6%8F%9B%E5%9E%8B%E5%88%A5-d7e39e30083) ### 10.3 初始化 - 宣告變數與初始化的重要性 - 若不初始化的話會有什麼樣的影響 - 可以不賦值嗎? - 測試在什麼樣的狀況下會產生錯誤 - 若沒初始化的話會抓到記憶體內潛存的值 ### 10.4 作用範圍 - 作用範圍的概念認知 什麼是作用範圍 全域變數 區域變數 - [name=Charis]: 以冰箱保存物品舉例 區域作用域 與 全域作用域 物品是否會損壞等...生活舉例 - [name=Ash]: 可否在教室 呼叫 Dino 與在 校園操場 呼叫Ya Jess 在幾行程式碼中 「跨距」 有多常使用該變數 該變數就存活多久 先宣告變數並賦值後 才在函式中應用 是否理想? 此書作者建議: 保持「有用」變數的使用範圍越小越好 - [name=Jess]: 資料庫處理 若一直開著連線的話會影響效能 python 有情境管理器 可輔助 使用資料庫時 使用全域變數 若只是單純的檔案的話 - [name=Ash] : 若使用全域變數中呼叫檔案的方式,可能會有的錯誤。 就近使用原則 避免變數被其他應用中汙染 ### 10.5 持續性 【賦值的運作】 - 與作用範圍的差別 - 變數存活時間的差別 - 值在記憶體內的存留 函式使用完後 function內的變數就會消失,得用 關鍵詞 或 static 延續變數的使用 記憶體內存在的變數?! ### 10.6 綁定時間 - 在不同時期作宣告所產生的影響 - 對Code可讀性有所影響 - [name=Ash]: CPU 編碼方式 x86 與 AMD 不同用詞變數,兩者不可共用 根據該環境去使用其變數 靈活 - [name=ya^2]: C++ 的虛擬函數 僅在使用時在解析特定函數 命名 變數 為動物 動物可以做什麼行為 綁定時間在編譯時就以定義要做什麼 僅在需要時才呼叫並執行 ### 10.7 資料類型和控制結構之間的關係 兩者有明確的相互關係 循序資料轉譯成程式中的循序陳述式 僅賦於單一功能 ### 10.8 為確切的一個目的使用每個變數 像是 閉包 與 IIFE Mackdown ˋˋˋ ˋˋˋ 作用域 宣告時 - [name=Dino] : 分享 ˋˋˋ for (var i = 0; i < 3; i++) { setTimeout(() => { console.log(i) }, 1000 * 1) } console.log(i); // 3 3 3 ˋˋˋ - [name=Charis] : 過程詳情歡迎至Discord-Tech Book Community 語音頻道【讀書會】Room C. 聊天室 查閱 若有錯誤之處或需補充的地方請不吝提出 感謝~