Saturday, July 7, 2012

Undefined dan Null

Tipe 'undefined' dikenakan kepada variabel atau properti suatu objek yang bisa disebabkan oleh yang manapun, karena memang mereka tidak ada atau karena memang mereka belum diberikan nilai. Contohnya ketika:

Mencoba mengembalikan variabel yang memang tidak ada atau belum didefinisikan, sebagai contoh:

try { alert(myVar); } catch (error) { alert(error); }

Mencoba mengembalikan nilai suatu variabel yang sudah dideklarasikan tetapi belum diberikan nilai, sebagai contoh:

try { var myVar; alert(myVar); } catch (error) { alert(error); }

Mencoba mengembalikan properti suatu objek yang memang tidak ada atau belum didefinisikan, sebagai contoh:

try { var oObj = {}; alert(oObj.foo); } catch (error) { alert(error); }

Mencoba mengembalikan nilai suatu properti yang memang belum diberikan nilai, sebagai contoh:

try { var arr = new Array(); arr[0]; alert(arr[0]); } catch (error) { alert(error); }

Mencoba mengembalikan nilai fungsi yang parameternya memang tidak mempunyai nilai untuk dilewati, sebagai contoh:

try { function foo(x) { return x; } alert(foo()); } catch (error) { alert(error); }

Untuk menguji apakah typeof dari variabel adalah 'undefined' atau bukan, anda harus melampirkan undefined di dalam tanda kutip, seperti contoh berikut:

if(typeof(myVar) === "undefined") { alert("True"); // ini dijalankan }else{ alert("False"); }

Sebaliknya, untuk menguji apakah suatu variabel mengembalikan atau menyimpan nilai undefined atau tidak, anda tidak boleh melampirkan undefined di dalam tanda kutip, seperti contoh berikut:

var myVar; if(myVar === undefined) { alert("True"); // ini dijalankan }else{ alert("False"); }

Variabel atau properti yang typeof-nya adalah 'undefined', menyimpan nilai undefined.

null mengindikasikan nilai kosong, bermakna 'tidak ada apa pun'. Perbedaan pasti antara undefined dan null saya juga sebenarnya masih bingung. Tetapi kalau bisa diartikan, undefined bermakna nilai belum di-set, sedangkan null bermakna nilai di-set untuk menjadi 'tidak ada apa pun'.

Contoh di bawah ini menggunakan null untuk menghapus event listener dari tombol:

var buttonObj = document.getElementById("mybtn"); buttonObj.onclick = function() { alert(this.tagName); }; buttonObj.onclick = null; // remove event handler

Di mana tombolnya mungkin seperti berikut:

<BUTTON ID="mybtn">This is a button.</BUTTON>

Contoh di bawah ini menguji apakah elemen P berisi null atribut event ONCLICK, jika benar, tetapkan atribut ONCLICK beserta nilainya:

<P>Lorem imsum...</P> <SCRIPT TYPE="text/javascript"> var pObj = document.getElementsByTagName("p")[0]; if(pObj.getAttribute("onclick") === null) { pObj.setAttribute("onclick", "alert('Halo dunia')"); } </SCRIPT>

Sekarang coba tambahkan:

pObj = null;

Setelah:

var pObj = document.getElementsByTagName("p")[0];

Di pastikan error terjadi, dikarenakan tidak dapat memanggil metode seAttribute() dari null.