Pengaturcaraan Defensif dan Semakan Masukan
Tulis semakan masukan kecil, gunakan klausa pengawal, penguraian selamat, nilai lalai dan pengesahan objek mudah untuk mengelakkan kegagalan lebih awal.
Pengaturcaraan Defensif dan Semakan Masukan ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 2 daripada 2. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 2 pelajaran.
Pengenalan kepada semakan defensif
Matlamat: Hentikan data masukan yang tidak sah lebih awal supaya pepijat tidak merebak.
- Semakan jenis dan julat
- Klausa pengawal
- Penghuraian selamat
- Nilai lalai dan pengesahan objek ringkas

Pembantu jenis
Cipta pembantu kecil untuk menggunakan semula semakan seperti number dan rentetan tidak kosong.
// Tiny type helpers
function isNumber(n) {
return typeof n === "number" && Number.isFinite(n);
}
function isNonEmptyString(s) {
return typeof s === "string" && s.trim().length > 0;
}
console.log("isNumber(3):", isNumber(3));
console.log("isNumber(NaN):", isNumber(NaN));
console.log("isNonEmptyString(\"\"):", isNonEmptyString(""));
console.log("isNonEmptyString(\"hi\"):", isNonEmptyString("hi"));

Demonstrasi klausa pengawal
Semak data masukan dahulu; hentikan pelaksanaan lebih awal apabila berlaku ralat supaya laluan utama kekal kemas.
// Guard clauses: return early if invalid
function buy(quantity) {
if (!isNumber(quantity)) {
console.log("Quantity must be a number");
return;
}
if (quantity <= 0) {
console.log("Quantity must be > 0");
return;
}
console.log("Buying", quantity, "items");
}
buy(3);
buy("3");
buy(0);

Penghuraian dengan sandaran
Sahkan hasil yang dihuraikan. Jika penghuraian gagal, pulangkan sandaran kecil dan bukannya menyebabkan program terhenti.
// Parse safely and use sensible defaults
function toInt(str, fallback = 0) {
const n = parseInt(str, 10);
if (!Number.isFinite(n)) {
return fallback;
}
return n;
}
console.log("toInt(\"42\"):", toInt("42"));
console.log("toInt(\"7px\", -1):", toInt("7px", -1));
console.log("toInt(\"abc\", 0):", toInt("abc", 0));

Nilai lalai dan julat
Gunakan ?? untuk nilai lalai null/undefined, kemudian hadkan nilai kepada julat yang selamat.
// Defaults with ?? and simple range checks
function clampPercent(value) {
// Use 0 as default when value is null or undefined
const v = (value ?? 0);
if (!isNumber(v)) {
return 0;
}
// Clamp into 0..100
const clamped = Math.min(100, Math.max(0, v));
return clamped;
}
console.log(clampPercent(undefined));
console.log(clampPercent(120));
console.log(clampPercent(-5));
console.log(clampPercent(55));

Semakan bentuk objek
Semak medan yang diperlukan dan julat ringkas; pulangkan objek hasil kecil seperti { ok, reason }.
// Simple object validation
function validateUser(u) {
if (u == null || typeof u !== "object") {
return { ok: false, reason: "User must be an object" };
}
if (!isNonEmptyString(u.name)) {
return { ok: false, reason: "name required" };
}
if (!isNumber(u.age) || u.age < 0) {
return { ok: false, reason: "age must be a number >= 0" };
}
return { ok: true };
}
console.log("good:", validateUser({ name: "Ayla", age: 21 }));
console.log("bad:", validateUser({ name: "", age: -1 }));

Kuiz semakan defensif
Semakan ringkas: Pengendalian data masukan secara defensif.

Ringkasan
Ringkasan: Gunakan pembantu jenis yang kecil, klausa pengawal, penghuraian selamat dengan sandaran, nilai lalai nullish, had julat, dan pengesahan objek ringkas untuk menghentikan pepijat lebih awal.

Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “Pengaturcaraan Defensif dan Semakan Masukan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “Pengaturcaraan Defensif dan Semakan Masukan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 2 pelajaran.
Apakah yang akan saya pelajari dalam “Pengaturcaraan Defensif dan Semakan Masukan”?
Tulis semakan masukan kecil, gunakan klausa pengawal, penguraian selamat, nilai lalai dan pengesahan objek mudah untuk mengelakkan kegagalan lebih awal. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 2.
Berapa lamakah pelajaran “Pengaturcaraan Defensif dan Semakan Masukan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- try/catch/finally, throw, ralat tersuai
- Pengaturcaraan Defensif dan Semakan Masukan