Akademi JavaScript · Pelajaran

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.

Pelajaran 2 daripada 28 langkah

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
Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 1

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"));
Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 2

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);
Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 3

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));
Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 4

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));
Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 5

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 }));
Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 6

Kuiz semakan defensif

Semakan ringkas: Pengendalian data masukan secara defensif.

Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 7

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.

Pengaturcaraan Defensif dan Semakan Masukan — ilustrasi 8
Percuma untuk bermula

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

  1. try/catch/finally, throw, ralat tersuai
  2. Pengaturcaraan Defensif dan Semakan Masukan
← Kembali ke Akademi JavaScript