Rumah  >  Artikel  >  hujung hadapan web  >  Primitif, Fungsi dan WTH Nilai tidak akan dikemas kini

Primitif, Fungsi dan WTH Nilai tidak akan dikemas kini

王林
王林asal
2024-08-14 12:33:39870semak imbas

Primitives, Functions, and WTH The Value won

Saya sedang berusaha pada asas saya sedikit dan terjumpa masalah ini, yang saya tahu secara intuitif, tetapi tidak pernah pergi secara terperinci untuk diterokai. Dan tiada alasan untuk saya tidak mempunyai pemahaman yang lebih mendalam tentang cara JavaScript menangani primitif.

Ini adalah contoh paling mudah. Di sini, myPointsvariable tidak akan dikemas kini walaupun saya memanggil fungsi add3 dan remove1.

let myPoints = 3;

function add3(points) {
 points += 3;
}

function remove1(points) {
  points--;
}

add3(myPoints);
remove1(myPoints);

console.log(myPoints) // 3

Berikut ialah konsep teras yang menjadikan ini berfungsi seperti biasa:

  1. Lulus mengikut nilai:
    Dalam JavaScript, apabila anda menghantar nilai primitif (seperti nombor) kepada fungsi, ia dihantar mengikut nilai. Ini bermakna salinan nilai dicipta dan dihantar kepada fungsi, bukan pembolehubah asal itu sendiri.

  2. Skop fungsi:
    Pembolehubah yang ditakrifkan di dalam fungsi mempunyai skop fungsi, bermakna ia hanya boleh diakses dalam fungsi tersebut.

  3. Kembalikan nilai:
    Fungsi dalam JavaScript perlu mengembalikan nilai secara eksplisit jika anda ingin menggunakan hasil di luar fungsi.

Inilah sebab myPoints tidak berubah:

  1. Apabila saya memanggil add3(myPoints), salinan nilai myPoints (3) dihantar ke fungsi.
  2. Di dalam fungsi, mata ialah pembolehubah setempat yang dinaikkan kepada 6.
  3. Walau bagaimanapun, perubahan ini hanya mempengaruhi pembolehubah mata tempatan, bukan myPoints asal.
  4. Fungsi ini tidak mengembalikan nilai baharu, jadi hasilnya tidak disimpan di mana-mana.
  5. myPoints asal kekal tidak berubah.

Untuk membetulkannya, saya mempunyai dua pilihan utama:

  1. Kembalikan nilai baharu dan tetapkan nilai itu semula:
function add3(points) { 
    return points + 3;
}

myPoints = add3(myPoints);
  1. Lepasi pembolehubah dengan rujukan (menggunakan objek):
let myPoints = { value: 3 };

function add3(pointsObj) { 
    pointsObj.value += 3;
}

add3(myPoints);
console.log(myPoints.value); // Now it's 6

Atas ialah kandungan terperinci Primitif, Fungsi dan WTH Nilai tidak akan dikemas kini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn