Freecodecamp: `var` harus dihentikan.

Dibuat pada 13 Agu 2016  ·  3Komentar  ·  Sumber: freeCodeCamp/freeCodeCamp

Tantangan Lingkup dan Fungsi Global memiliki masalah.
Agen Pengguna adalah: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 .
Jelaskan cara mereproduksi masalah ini, dan sertakan tautan ke tangkapan layar jika memungkinkan.

kode saya:

// Declare your variable here
var myGlobal = 10;

function fun1() {
  // Assign 5 to oopsGlobal Here

}

// Only change code above this line
function fun2() {
  var output = "";
  if (typeof myGlobal != "undefined") {
    output += "myGlobal: " + myGlobal;
  }
  if (typeof oopsGlobal != "undefined") {
    output += " oopsGlobal: " + oopsGlobal;
  }
  console.log(output);
}

Kita harus mulai menggunakan es6 let dan const . Deklarasi variabel var berpotensi menimbulkan bug.

discussing

Komentar yang paling membantu

@BKinahan Bagus sekali.

Kapan menggunakan dan tidak menggunakan var tidak selalu tergantung pada masing-masing pengembang tetapi sebagian besar waktu tergantung pada tim.

Meskipun saya belum menemukan waktu di mana var tidak dapat diganti dengan let atau const saya telah berbicara dengan seorang insinyur di OpenTable, yang baru-baru ini memfaktorkan ulang seluruh basis kode mereka untuk digunakan ES2015, dan dia menyebutkan ada satu kasus di mana let atau const adalah penyebab bug dan var harus digunakan tetapi dia tidak dapat mengingat detail persisnya mengapa itu.

Saya tidak berpikir var harus berkecil hati. Lebih baik jelaskan cara kerja var dan biarkan pengembang memilih begitu mereka semakin jauh dalam perjalanan menuju pencerahan.

Ada juga beberapa keanehan dengan let dan const yang jika Anda tidak menyadarinya dapat melalui Anda melalui beberapa loop (lihat: temporal dead zone ). Ini tidak mendiskualifikasi let dan const untuk digunakan, meskipun ini mengganggu. Itu hanya berarti bahwa grokking sesuatu sama pentingnya dengan mengetahui sesuatu.

Semua 3 komentar

Fitur ES6 termasuk let dan const akan dibahas secara rinci dalam topik kurikulum baru yang sedang dikembangkan (lihat di sini ). Tantangan ini juga akan mengatasi masalah yang dapat disebabkan oleh pelingkupan/pengangkatan saat menggunakan var .

Untuk saat ini tantangan ini berfungsi sebagai pengantar untuk pelingkupan dan beberapa masalah yang harus diwaspadai ketika var digunakan, dan masih berisi informasi yang berguna karena pekemah kemungkinan akan menemukan kode dari sumber (lama) lain yang melakukannya gunakan var (misalnya kode lama, dll), sehingga ini merupakan pengantar yang berguna untuk masalah yang dibahas.

Mungkin ada argumen untuk menghapus garis

Anda harus selalu mendeklarasikan variabel Anda dengan var.

atau mengubahnya dengan beberapa peringatan tentang belajar tentang let dan const nanti, tapi saya pikir tantangan ini baik untuk pengenalan pertama topik.

cc @FreeCodeCamp/issue-moderators Pikiran?

@BKinahan Bagus sekali.

Kapan menggunakan dan tidak menggunakan var tidak selalu tergantung pada masing-masing pengembang tetapi sebagian besar waktu tergantung pada tim.

Meskipun saya belum menemukan waktu di mana var tidak dapat diganti dengan let atau const saya telah berbicara dengan seorang insinyur di OpenTable, yang baru-baru ini memfaktorkan ulang seluruh basis kode mereka untuk digunakan ES2015, dan dia menyebutkan ada satu kasus di mana let atau const adalah penyebab bug dan var harus digunakan tetapi dia tidak dapat mengingat detail persisnya mengapa itu.

Saya tidak berpikir var harus berkecil hati. Lebih baik jelaskan cara kerja var dan biarkan pengembang memilih begitu mereka semakin jauh dalam perjalanan menuju pencerahan.

Ada juga beberapa keanehan dengan let dan const yang jika Anda tidak menyadarinya dapat melalui Anda melalui beberapa loop (lihat: temporal dead zone ). Ini tidak mendiskualifikasi let dan const untuk digunakan, meskipun ini mengganggu. Itu hanya berarti bahwa grokking sesuatu sama pentingnya dengan mengetahui sesuatu.

Terima kasih atas masukannya. Mereka berdua poin yang bagus. Saya kira ini semua berdasarkan opini. Namun, saya akan mempertahankan pernyataan saya, dan saya akan pergi sejauh berkhotbah untuk menggunakan data yang tidak dapat diubah, dan menggunakan perpustakaan seperti immutable.js atau mori untuk mencegah mutasi data yang tidak terduga. ️

Apakah halaman ini membantu?
0 / 5 - 0 peringkat