Ada dua bagian utama yang var FOO = FOO || {};menutupi.
# 1 Mencegah penggantian
Bayangkan Anda memiliki kode yang dibagi menjadi beberapa file dan rekan kerja Anda juga mengerjakan sebuah Object bernama FOO. Maka itu bisa mengarah pada kasus bahwa seseorang sudah mendefinisikan FOOdan menetapkan fungsionalitas padanya (seperti skateboardfungsi). Kemudian Anda akan menimpanya, jika Anda tidak memeriksa apakah sudah ada.
Kasus bermasalah:
// Definition of co-worker "Bart" in "bart.js"
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};
// Definition of co-worker "Homer" in "homer.js"
var FOO = {};
FOO.donut = function() {
alert('I like donuts!');
};
Dalam hal ini skateboardfungsi akan hilang jika Anda memuat file JavaScript homer.jssetelah bart.jsdi HTML Anda karena Homer mendefinisikan FOOobjek baru (dan dengan demikian menimpa yang sudah ada dari Bart) sehingga hanya mengetahui tentang donutfungsi tersebut.
Jadi, Anda perlu menggunakan var FOO = FOO || {};yang artinya "FOO akan ditempatkan ke FOO (jika sudah ada) atau objek kosong baru (jika FOO belum ada).
Larutan:
var FOO = FOO || {};
// Definition of co-worker Bart in bart.js
FOO.skateboard = function() {
alert('I like skateboarding!');
};
// Definition of co-worker Homer in homer.js
var FOO = FOO || {};
FOO.donut = function() {
alert('I like donuts!');
};
Karena Bart dan Homer sekarang memeriksa keberadaan FOOsebelum mereka mendefinisikan metodenya, Anda dapat memuat bart.jsdan homer.jsdalam urutan apa pun tanpa menimpa metode satu sama lain (jika mereka memiliki nama yang berbeda). Jadi Anda akan selalu mendapatkan FOOobjek yang memiliki metode skateboarddan donut(Yay!).
# 2 Mendefinisikan objek baru
Jika Anda sudah membaca contoh pertama maka Anda sudah sekarang apa tujuan dari || {}.
Karena jika tidak ada FOOobjek maka OR-case akan menjadi aktif dan membuat objek baru, sehingga Anda dapat menetapkan fungsinya. Suka:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};