JS 超反人類語法避坑清單(實用版)

...(spread / rest)

[...arr]

 問題點:完全看不出在幹嘛
 正解:展開 / 複製 / 轉陣列

建議(你這種場景)

Array.from(arrLike)

 ✔ 比較好懂
 ✔ 好搜尋


??(nullish coalescing)

const name = input ?? "預設";

 只在 null / undefined 才用預設

 很多人以為等於 ||

0 || 100 // → 100 ❌
0 ?? 100 // → 0 ✅

坑點:0 / "" / false 不會觸發


|| 當預設值(舊寫法雷區)

const val = input || 100;

 問題:

  • 0
  • ""
  • false

全部會被吃掉

 現代建議:

const val = input ?? 100;

&& 偷偷執行(超陰)

isReady && doSomething();

 意思是:

  • 如果 isReady = true → 執行

 問題:可讀性很差(新手完全看不懂)

建議

if (isReady) doSomething();

== vs ===(經典炸彈)

0 == false // true 😱
"" == 0 // true 😱

永遠用:

===

除非你非常確定在幹嘛(通常不是)


[] == false(地獄級)

[] == false // true 🤯

 原因:JS 會偷偷轉型

 解法:

不要用 ==


parseInt 沒給 radix

parseInt("08")

某些舊環境會變 0(當八進位)

正確:

parseInt("08", 10)

map 沒 return(超常見 bug)

arr.map(x => {
x * 2;
});

 結果:

[undefined, undefined, undefined]

要嘛:

arr.map(x => x * 2);

arr.map(x => {
return x * 2;
});

forEach 不能 break(很多人中招)

arr.forEach(x => {
if (x === 3) break; // ❌ 直接爆
});

 用:

for (const x of arr) {
if (x === 3) break;
}

this(最大魔王)

const obj = {
name: "A",
fn: function () {
console.log(this.name);
}
};

還算正常

但:

const fn = obj.fn;
fn(); // undefined 😱

this 會變


建議(簡化人生)

少用 this,多用:

const name = "A";

function fn() {
console.log(name);
}

或 arrow function(但也有坑)


setTimeout + loop

for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}

 輸出:

3 3 3 😱

 用 let

for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}

空陣列判斷

if (arr) // ❌

 永遠 true

 正確:

if (arr.length > 0)

核心原則

如果你是走你這條路(高效 + 原生):

優先選:

  • 可讀性高
  • 好搜尋
  • 行為明確

[Linux] 一般使用者權限的程式執行關機的方法

🔹 建立腳本

sudo nano /usr/local/bin/poweroff_safe.sh

內容:

#!/bin/bash
shutdown -h now
sudo chmod +x /usr/local/bin/poweroff_safe.sh

[Linux] RPI的GPIO控制

# 查看 GPIO 芯片

gpioinfo


cat /proc/bus/input/devices | grep gpio-keys

結果:

返回空


cat /proc/bus/input/devices | grep kbd 

結果:

H: Handlers=kbd mouse0 event0 

H: Handlers=kbd event1 

H: Handlers=kbd event3

它們都是「鍵盤類 input device」,(可能是 USB keyboard / 虛擬 console / IR / 其他) 

 結論

GPIO26「很可能還沒被設成 gpio-keys」(或名稱不是 gpio-keys)

正常情況應該會看到:Name="gpio-keys"

最快確認方法

解釋 LS ES PS MP 產品階段

這些通常是硬體/製造業產品開發流程中的階段縮寫,不同公司細節略有差異,但業界常見解釋如下:


LS – Lab Sample(實驗室樣品)

  • 目的:驗證概念與基本功能

  • 特點

    • 多為手工製作或少量打樣

    • 不一定符合最終外觀、尺寸或材料

    • 主要測試電路、原理、可行性

  • 風險:穩定度低,不適合對外或量產


cpu gpu eglfs vc4 framebuffer drm kms 和影像播放的流程

DRM (Direct Rendering Manager)

  • DRM 是 Linux 內核的一部分,負責處理顯示卡的顯示控制、圖形加速、顯示模式設定等任務。它提供了一個介面讓用戶空間的應用程式能夠直接與顯示硬體進行交互。DRM 允許使用硬體加速的圖形渲染,並將圖形渲染的結果呈現在顯示器上,這通常與 KMS 結合使用來管理顯示。

液冷散熱是什麼?跟水冷有何不同?

AI需求大爆發,解析下一個明星技術

輝達(NVIDIA)執行長黃仁勳曾透露,NVIDIA的下一代DGX AI伺服器將採用液冷(liquid-cooled)散熱技術,讓周邊供應商也開始受到關注,散熱廠商雙鴻科技就是其中之一。

雙鴻近日發布6月營運成績單,營收以16.92億元寫下歷史新高,較去年同期的8.5億元大增99.06%。雙鴻指出,主要受惠於水冷應用持續發酵,客戶需求持續增溫所致。

包括雙鴻在內,另一家散熱廠泰碩也曾在營業報告書中指出水冷是未來的趨勢。究竟水冷是什麼?跟液冷技術的差別是什麼?雙鴻的水冷技術跟液冷的差別是?未來潛力如何?

CoWoS產能再翻倍!圖解CoWoS封裝為何厲害?

台積電CoWoS產能加速!CoWoS封裝是什麼?

CoWoS 是什麼

CoWoS封裝 (英文名為 Chip-on-Wafer-on-Substrate ),是一種先進的半導體封裝技術,可以進一步將CoWoS封裝拆分成Cow和Wos兩步驟:

半導體產業簡介

半導體產業簡介: 所謂微電子產業,就是生產 積體電路 ( 大陸稱為 集成電路 ) 的產業 。 積體電路 (Integrated Circuit ,簡稱 IC) 在電子學中是一種把電路(包括半導體裝置、元件)小型化的方式、並製造在半導體晶圓表面上。所以半導體只是製作「 ...