Cara mendeklarasikan sebuah variabel adalah dengan kata kunci let atau const dan diikuti dengan nama
variabelnya, seperti ini:
Dalam menamakan variabel, kalian pun perlu mengikuti beberapa ketentuan sebagai berikut:
Menggunakan konvensicamelCase, yaitu menggunakan huruf kecil pada permulaan kata, dan jika nama
variabel terdiri dari 2 kata atau lebih, maka kata kedua dan berikutnya diawali dengan huruf besar. (Ini
sebenarnya bukan syarat mutlak; hanya kebiasaan. Nanti kalian akan menemukan konvensi lain seperi
PascalCase saat belajar JavaScript lebih lanjut);
Nama variabel boleh diawali dengan underscore(_), huruf besar (jika diharuskan), dan $.
Nama variabel tidak diawali dengan angka, @, *, #, !, %, (), -, +.
Tidak boleh menggunakan kata kunci JavaScript seperti boolean, break, else, extends, dan lain-lain.
Antara kata pertama dan kata kedua tidak diberi spasi atau dash(-);
Karena JavaScript bersifat case-sensitive, maka penamaan juga case-sensitive (jadi variabel hitung
dengan variabel Hitung itu berbeda).
Contoh:
// Contoh penulisan nama variabel yang benar
let nama;
let tempatTinggal;
let _nomorHandphone;
let $nomorAkunBank;
Pada contoh di atas, variabel nama bernilai Stefanus dan tipe datanya adalah string. Tipe data
string memiliki ciri khas yaitu nilai data dibungkus dengan tanda ' atau ".
Variabel namaIbuKandung juga memiliki nilai yang bertipe data string Clara. Lalu apa yang
membedakan kedua variabel tersebut?
Variabel yang dideklarasikan menggunakan kata kunci let dapat diubah nilainya. Misalnya kita ingin
mengubah variabel nama tadi menjadi Albert, kita cukup memberinya data tersebut seperti ini:
// memberi nilai baru kepada variabel nama
nama = "Albert";
Sementara variabel yang dideklarasikan menggunakan kata kunci const tidak dapat diubah nilainya;
sudah konstan. Jika kita tetap mencoba untuk memberinya nilai seperti di bawah ini, akan muncul error.
// memberi nilai baru kepada variabel namaIbuKandung tadi
namaIbuKandung = "Juliana";
📝 Catatan:
Namun terdapat 2 pengecualian dalam penggunaan kata kunci const. Variabel yang memiliki tipe data
array atau objek bisa diubah nilai element atau propertinya meskipun menggunakan kata kunci const saat
dideklarasikan. Kalian akan belajar ini di topik selanjutnya.
TIPE DATA
Kembali ke pembahasan tipe data. Variabel umur memiliki nilai 20 yang mana termasuk tipe data
number. Tipe data ini bisa berupa:
integer (seperti 1, 2, dan 3)
atau float (seperti 3.14, 2.718, dan 1.618)
Terakhir, variabel jumlahAnak bernilai undefined, karena memang tidak diisi dengan nilai apapun. Jika
variabel tidak kita beri sebuah nilai, secara default (standar) ia memiliki nilai undefined.
Untuk merangkum, berikut adalah 7 tipe data yang ada dalam JavaScript:
string - deretan karakter yang diapit oleh sepasang tanda kutip;
number - bilangan bulat, pecahan, dan lain-lain;
boolean - nilai benar dari sebuah pernyataan yang dituliskan sebagai true atau false;
null - sebuah nilai yang berarti kosong atau menunjuk pada nilai yang tidak ada;
undefined - berbeda dari null, undefined menandakan kondisi variabel yang belum diberi sebuah nilai.
Jadi pernyataan "nilai variabel itu adalah undefined" sebenarnya kurang tepat, sebab variabelnya memang
tidak mempunyai sebuah nilai;
symbol - sebuah nilai unik yang dihasilkan tiap kali kita memanggil fungsi Symbol(). Nilai unik ini
memiliki beberapa kegunaan seperti memberi nomor identifikasi unik dan berperan sebagai nama properti
unik sebuah objek;
object - sebuah kumpulan pasangan properti dan nilai. Seperti objek dalam kehidupan sehari-hari saja.
Misalnya objek Apel memiliki properti warna dengan
Browser pada umumnya mempunyai tab console yang bisa digunakan untuk menampilkan data
console.log dari kode JavaScript. Untuk mengaktifkan tab console di Chrome, bisa dilakukan dengan
pilih menu View -> Developer -> Developer Tools atau dengan tekan tombol F12 atau kombinasi tombol
Ctrl-Shift-I.
console.log adalah salah satu syntax JavaScript untuk menampilkan nilai suatu variabel atau hasil
operasi di tab console.
Contoh:
let nama = "Budi";
let umur = 20;
let apakahSudahMenikah = false;
let jumlahAnak;
Dengan console.log, output dari variabel atau operasi yang kita masukkan tidak akan kelihatan di
halaman website dan hanya bisa tampil di tab console. Dengan begitu, output tersebut tidak akan
mengganggu tampilan website kamu.
console.log juga sering digunakan developer ketika mau debug/investigasi kesalahan di kode yang
ditulis.
ARITMATIKA
Operator aritmatika digunakan di operasi matematika yang melibatkan data dengan tipe number.
Operator-operator tersebut dapat dilihat pada tabel berikut ini:
Operator Deskripsi
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
** Eksponen (pangkat)
% Modulus (menghasilkan sisa hasil pembagian)
++ Increment (menambah 1)
-- Decrement (mengurangi 1)
Pengurangan
let bilangan1 = 10;
let bilangan2 = 3;
console.log(bilangan1 - bilangan2); // Output: 7
Perkalian
let bilangan1 = 10;
let bilangan2 = 3;
console.log(bilangan1 * bilangan2); // Output: 30
Pembagian
let bilangan1 = 10;
let bilangan2 = 3;
console.log(bilangan1 / bilangan2); // Output: 3.3333333333333335
Eksponen (Pangkat)
let bilangan1 = 10;
let bilangan2 = 3;
console.log(bilangan1 ** bilangan2); // Output: 1000
Modulus
let bilangan1 = 10;
let bilangan2 = 3;
console.log(bilangan1 % bilangan2); // Output: 1
Increment (Tambah 1)
let bilangan = 10;
bilangan++;
console.log(bilangan); // Output: 11
Contoh operasi di atas apabila dituliskan tanpa operator increment akan sama seperti ini:
let bilangan = 10;
bilangan = bilangan + 1;
console.log(bilangan); // output: 11
Decrement (Kurang 1)
let bilangan = 10;
bilangan--;
console.log(bilangan); // output: 9
Contoh operasi di atas apabila dituliskan tanpa operator decrement akan sama seperti ini:
let bilangan = 10;
bilangan = bilangan - 1;
console.log(bilangan); // output: 9
ASSIGNMENT
Assignment operator digunakan untuk memberikan nilai pada variabel.
Addition Assignment +=
let bilangan = 10;
bilangan += 5;
console.log(bilangan); // Output: 15
Subtraction Assignment -=
let bilangan = 10;
bilangan -= 5;
console.log(bilangan); // Output: 5
Multiplication Assignment *=
let bilangan = 10;
bilangan *= 5;
console.log(bilangan); // Output: 50
Division Assignment /=
let bilangan = 10;
bilangan /= 5;
console.log(bilangan); // Output: 2
Modulus Assignment %=
let bilangan = 10;
bilangan %= 5;
console.log(bilangan); // Output: 0
STRING OPERATOR
String operator digunakan untuk menggabungkan dua atau lebih data string. Operasi ini biasa dikenal
dengan sebutan string concatenation.
Contoh penggunaan:
operator +
let namaDepan = "Albert";
let namaBelakang = "Einstein";
console.log(namaDepan + " " + namaBelakang); // Output: Albert Einstein
operator +=
let kata = "Halo ";
kata += "Dunia";
console.log(kata); // Output: Halo Dunia
Oh iya, di JavaScript, jika kita menggabungkan data string dengan data number, maka hasil akhirnya juga
akan menjadi string.
Contoh:
let kata = "Kambing ada ";
let bilangan = 5;
console.log(kata + bilangan); // Output: Kambing ada 5
OPERATOR PERBANDINGAN
Operator perbandingan digunakan untuk membandingkan dua data atau nilai.
Operator Deskripsi
== sama dengan (cek nilai)
=== sama dengan (cek nilai dan tipe data)
!= tidak sama dengan (cek nilai)
!== tidak sama dengan (cek nilai dan tipe data)
> lebih dari
< kurang dari
>= lebih dari atau sama dengan
<= kurang dari atau sama dengan
?: ternary operator
Mari kita coba perhatikan bilangan == "10". Kenapa outputnya bisa true? Karena di dalam JavaScript jika
operand-nya berbeda tipe data, maka salah satunya akan dipaksa berubah tipe datanya (type coercion)
agar mereka sama dan bisa dibandingkan
📝 Catatan:
Yang dimaksud dengan operand adalah nilai yang digunakan di dalam sebuah proses operasi. Misalnya
dalam operasi penjumlahan 1 + 2, yang tergolong operand adalah angka 1 dan 3.
Biar lebih paham, mari kita coba perhatikan contoh di bawah ini:
console.log("3.14" == 3.14) // Output: true
Operator !=
let bilangan = 10;
console.log(bilangan != 8); // Output: true --> nilai tidak sama tetapi tipe data sama
console.log(bilangan != "8"); // Output: true --> nilai dan tipe data tidak sama
console.log(bilangan != 10); // Output: false --> nilai dan tipe data sama
console.log(bilangan != "10"); // Output: false --> nilai sama tetapi tipe data tidak sama
Mungkin kalian agak bingung kalau melihat contoh di atas. Yang perlu kalian ketahui adalah operator !=
akan menghasilkan output false apabila kedua operand memiliki nilai yang sama, tidak terpengaruh sama
tipe datanya.
Operator !==
let bilangan = 10;
console.log(bilangan !== 8); // Output: true --> nilai tidak sama tetapi tipe data sama
console.log(bilangan !== "8"); // Output: true --> nilai dan tipe data tidak sama
console.log(bilangan !== 10); // Output: false --> nilai dan tipe data sama
console.log(bilangan !== "10"); // Output: true --> nilai sama tetapi tipe data tidak sama
Kali ini nilai dan tipe data akan dicek. Operator ini hanya akan mengeluarkan output false apabila **nilai
dan tipe data dari kedua operand sama. **
Operator Ternary
Digunakan untuk memberikan nilai pada variabel sesuai dengan kondisi yang ditentukan.
Syntaxnya adalah:
variabel = (kondisi true) ? nilai1 : nilai2;
// Artinya apabila kondisi true, maka variabel akan diberi nilai1
// Apabila kondisi false, maka variabel akan diberi nilai2
Contoh:
let makanan = "daging";
let jenisHewan = makanan === "daging" ? "karnivora" : "herbivora";
console.log(jenisHewan); // Output: "karnivora"
Pada kode di atas, kondisi yang diberikan adalah makanan === "daging". Karena kondisi tersebut bernilai
true, maka yang dikembalikan oleh operator ini adalah "karnivora".
Seandainya variabel makanan tidak bernilai "daging", maka kondisi makanan === "daging" akan bernilai
false dan nilai yang akan dikembalikan adalah "herbivora"
OPERATOR LOGIKA
Operator logika digunakan untuk menentukan logika antara dua kondisi atau nilai.
Operator Deskripsi
&& AND (Dan)
|| OR (Atau)
! NOT (Bukan)
Operator || (OR)
kondisi1 || kondisi2
Operator ini akan menghasilkan output true apabila salah satu dari operand-nya bernilai true (kondisi1
bernilai true atau kondisi2 bernilai true).
Operator ! (NOT)
!kondisi
Operator ini akan bernilai true apabila operand-nya bernilai false (negation). Dan sebaliknya, operator
akan mengembalikan false apabila operand-nya bernilai true.
Tabel Perbandingan
Jika kedua kondisi bertipe boolean, maka hasil dari masing-masing operator logika akan seperti ini:
FUNGSI (FUNCTION)
Di konsep JavaScript, fungsi bisa diilustrasikan sebagai berikut:
Seandainya kita mempunyai sebuah mesin pembuat kue. Kita bisa memasukkan bahan baku seperti
tepung terigu, telur, gula, air, dan bahan lainnya ke dalam mesin tersebut, kemudian mesin itu akan
mengolah bahan-bahan tersebut yang akhirnya akan menghasilkan kue.
Nah, dari gambaran tersebut, mesin pembuat kue adalah ** fungsi (function)**. Tepung terigu, telur,
gula, air, dan bahan-bahan lain untuk membuat kue adalah input (parameter) dari sebuah fungsi.
Kemudian kue yang dihasilkan dari proses pengolahan mesin kue adalah hasil (return value).
Fungsi dapat dipanggil cukup dengan menambahkan tanda kurung () setelah nama fungsi tersebut. Dalam
dua contoh di atas, pemanggilan fungsinya adalah sebagai berikut:
namaFungsi();
namaVariabelFungsi();
Contoh:
// Fungsi yang berdiri sendiri
function sapa() {
return "Selamat Pagi!";
}
console.log(sapa()); // Output: Selamat Pagi!
Pada contoh kedua di atas, return value-nya adalah "Hallo, nama saya Sarah.". Bedakan return dengan
console.log() ya.
console.log() hanya menampilkan informasi ke dalam tab console JavaScript, sedangkan return akan
mengembalikan sebuah nilai ke tempat di mana fungsi itu dipanggil.
Parameter adalah syarat input yang harus dimasukkan ke dalam suatu fungsi dan dideklarasikan bersama
dengan deklarasi fungsi. Sementara argument adalah nilai yang dimasukan ke dalam suatu fungsi, sesuai
dengan persyaratan parameter, di mana argument dituliskan bersamaan dengan pemanggilan fungsi.
FUNCTION HOISTING
Ada hal keren yang dimiliki oleh fungsi JavaScript, yaitu kita bisa memanggilnya terlebih dahulu,
padahal deklarasi fungsi ada di baris setelahnya.
"Apa kerennya? Perasaan biasa saja" mungkin kalian akan berpikir seperti itu.
Contoh:
console.log(operasiPerkalian(5, 5)); // Output: 25
function operasiPerkalian(angka1, angka2) {
return angka1 * angka2;
}
Secara logika, harusnya kita mendeklarasikan fungsi terlebih dahulu, setelah itu barulah kita
menggunakan fungsi tersebut (pada contoh di atas, fungsi operasiPerkalian dipanggil di dalam
console.log padahal deklarasinya ditulis setelah console.log). Nah, keistimewaan inilah yang disebut
dengan Function Hoisting.
Tapi, ini tidak berlaku jika fungsi tersebut dideklarasi di dalam sebuah variabel.
Contoh:
console.log(operasiPerkalian(5, 5)); // Output: Uncaught ReferenceError: Cannot access 'operasiPerkalian'
before initialization
const operasiPerkalian = function(angka1, angka2) {
return angka1 * angka2;
};
Contoh:
const olahraga = 'basketball';
function namaAtlet() {
let atlet = 'Lionel Messi';
const noMessi = 10;
console.log(olahraga); // Output: basketball
if (olahraga === 'basketball') {
atlet = 'Kobe Bryant';
const noKobe = 24;
console.log(olahraga); // Output: basketball
}
return atlet;
}
console.log(namaAtlet()); // Output: Kobe Bryant
console.log(olahraga); // Output: basketball
Pada contoh di atas, fungsi variabel olahraga bisa diakses di dalam fungsi namaAtlet dan bahkan di dalam
blok if walaupun variabel olahraga tidak dideklarasikan di dalam fungsi/blok tersebut. Ini dikarenakan
variabel olahraga yang dideklarasikan di luar fungsi namaAtlet memiliki lingkup global, jadi bisa diakses
dari mana saja selama ada di dalam lingkup variabel tersebut.
Lingkup Lokal
Sebaliknya, lingkup lokal adalah ketika sebuah variabel hanya bisa diakses di dalam sebuah fungsi atau
blok kode. Semua variabel yang dideklarasikan di dalam sebuah fungsi/blok hanya bisa di dalam
fungsi/blok tersebut saja.
Mari kita gunakan contoh sebelumnya dan ubah perintah console.log menjadi:
const olahraga = 'basketball';
function namaAtlet() {
let atlet = 'Lionel Messi'; // lingkup fungsi
const noMessi = 10; // lingkup fungsi
if (olahraga === 'basketball') {
atlet = 'Kobe Bryant';
const noKobe = 24; // lingkup blok
console.log(noMessi); // Output: 10
}
console.log(noKobe); // Output: Uncaught ReferenceError: noKobe is not defined
return atlet;
}
namaAtlet();
Pada contoh di atas, perintah console.log(noKobe) akan mengembalikan nilai error karena kita mencoba
mengakses variabel noKobe di luar lingkup di mana dia dideklarasikan (yaitu di dalam blok if saja).
Sedangkan perintah console.log(noMessi) akan menghasilkan output 10 karena variabel noMessi
dideklarasikan di luar blok if jadi semua kode di dalam blok if tersebut mempunyai akses ke variabel itu.
Object (Objek)
Di JavaScript, objek bisa digambarkan sebagai sesuatu yang memiliki properti dan nilai.
Sebagai contoh, manusia. Manusia memiliki nama, pekerjaan, umur, dan lain sebagainya. Nah, kemudian
kita tahu bahwa nama orang ini adalah Sarah, pekerjaannya adalah programmer, umurnya 24 tahun, dan
lain-lain.
Dalam hal ini, manusia adalah objek. Kemudian nama, pekerjaan, umur adalah properti objek. Terakhir,
Sarah adalah nilai dari properti nama, programmer adalah nilai dari properti pekerjaan, dan 24 tahun
adalah nilai dari properti umur.
Yap, sesimpel itu konsep dari sebuah objek JavaScript. Oh, jangan lupa! Objek JavaScript dapat
menampung properti dan nilai sebanyak apapun dengan tipe data yang beragam.
Contoh:
let buah = { nama: 'mangga', warnaKulit: 'hijau', hargaPerBuah: 5000 };
let orang = {
nama: 'sarah',
umur: 24,
pekerjaan: 'programmer'
};
Perhatikan contoh kode di atas! Objek berciri khas datanya dibungkus dengan kurung kurawal {}, dan
antar data diberi koma ,.
Menggunakan Kata Kunci new
Cara mendeklarasikan objek JavaScript dengan kata kunci new adalah sebagai berikut:
Contoh:
let orang = new Object();
orang.nama = 'sarah';
orang.umur = 24;
orang.pekerjaan = 'programmer';
Cara menambah properti baru ke dalam suatu objek mirip dengan cara mendeklarasikannya.
Dot Notation
let objek = { namaProperti1: nilaiProperti1 };
objek.namaProperti2 = nilaiProperti2;
console.log(objek); // output: { namaProperti1: nilaiProperti1, namaProperti2: nilaiProperti2 }
Contoh:
let orang = {
nama: 'sarah',
umur: 24,
pekerjaan: 'programmer'
};
orang.kebangsaan = 'warga negara indonesia';
console.log(orang);
/*
Output:
{
nama: 'sarah',
umur: 24,
pekerjaan: 'programmer',
kebangsaan: 'warga negara indonesia'
}
*/
Bracket Notation
let objek = { namaProperti1: nilaiProperti1 };
objek['namaProperti2'] = nilaiProperti2;
console.log(objek); // output: { namaProperti1: nilaiProperti1, namaProperti2: nilaiProperti2 }
Contoh:
let orang = {
nama: 'sarah',
umur: 24,
pekerjaan: 'programmer'
};
orang['kebangsaan'] = 'warga negara indonesia';
console.log(orang);
/*
Output:
{
nama: 'sarah',
umur: 24,
pekerjaan: 'programmer',
kebangsaan: 'warga negara indonesia'
}
*/
Apakah kalian masih ingat di beberapa topik sebelumnya, kita sempat membahas tentang penggunaan let
dan const di mana variabel yang dideklarasikan dengan menggunakan const tidak bisa diubah datanya
terkecuali variabel itu adalah tipe objek atau array.
Jadi untuk objek JavaScript, pengubahan nilai properti seperti berikut tidak akan memunculkan error
walaupun variabel objek-nya dideklarasikan dengan const:
const objek = { namaProperti1: nilaiProperti1 };
📝 Catatan:
Variabel tipe objek dan array yang dideklarasi dengan menggunakan const bisa diubah atau ditambah
nilai properti/element-nya. Tetapi variabel-nya sendiri tetap tidak bisa diubah nilainya.
Gunakan kata kunci delete jika ingin menghapus salah satu properti pada objek.
Contoh:
let orang = {
nama: 'sarah',
umur: 24,
pekerjaan: 'programmer'
};
delete orang.umur;
delete orang['pekerjaan'];
console.log(orang); // Output: { nama: "sarah" }
Array
Array adalah tipe variabel yang dapat menampung berbagai jenis data dengan tipe yang bermacam-
macam, dengan jumlah yang tidak terbatas. Array di JavaScript memiliki ciri khas yaitu data yang
ditampung dibungkus dengan sepasang kurung siku [ ].
Contoh:
let buah = [ 'Mangga', 'Apel', 'Jeruk'];
let hargaBuah = ["20000", 30000, 15000]; // Tipe data di array boleh berbeda
Contoh:
let buah = new Array( 'Mangga', 'Apel', 'Jeruk');
let hargaBuah = new Array("20000", 30000, 15000); // Tipe data di array boleh berbeda
Array
Setiap data di array memiliki nomor index. Nomor index berguna untuk mengakses data suatu array di
posisi tertentu. Nomor index di array selalu dimulai dari angka nol 0
console.log(buah.length); // Output: 3
console.log(olahraga.length); // Output: 4
console.log(murid.length); // Output: 0
Jadi, mohon diingat sekali lagi 🙏🏻:
Nomor index dari suatu array selalu dimulai dari angka nol 0.
namaArray[nomorIndex]
Contohnya seperti ini:
Di topik terakhir, kita sudah mempelajari tentang array length di mana syntax array.length itu
mengembalikan jumlah data dari sebuah array. Di topik yang sama, kita juga diingatkan kalau nomor
index dari sebuah array dimulai dari angka nol. Jadi untuk mengakses element terakhir dari sebuah array,
kita bisa menggunakan formula sebagai berikut:
Jadi untuk mengakses element terakhir dari array countries di atas bisa menggunakan cara singkat
berikut:
// menggunakan formula di atas
let indexElementTerakhir = countries.length - 1;
// atau
console.log(countries[countries.length - 1]); // Output: Zimbabwe
Mengakses Seluruh Element Array
Namun, jika kita ingin mengakses seluruh data yang berada di dalam suatu array, maka kita cukup
panggil nama dari array tersebut.
Contoh:
Data/element dari suatu array bisa kita ubah dengan syntax seperti ini:
namaArray[nomorIndex] = nilaiBaru;
Contohnya:
namaBuah[1] = "Semangka";
Di JavaScript, hampir semua tipe data yang bukan primitive (primitive contohnya string, number,
boolean, bigint, null, undefined, symbol) adalah objek. Jadi karena array bukan tipe data primitive, array
termasuk objek dan bisa mempunyai properti dengan nilai fungsi yang kita kenal dengan method.
Di topik ini, kita akan bahas beberapa array method yang umum digunakan.
Contoh:
array.join(penghubung);
Penjelasan syntax di atas:
Parameter penghubung adalah optional parameter, yaitu parameter yang boleh diisi, boleh juga
dikosongkan. penghubung menentukan karakter apa yang mau ditambahkan sebagai penghubung antara
element array. Secara default, apabila dikosongkan, array.join() akan menggunakan tanda koma , sebagai
penghubung element array.
Contoh:
Contoh:
array.pop();
Contoh:
Contoh:
array.shift();
Contoh:
array.unshift("Selamat Pagi");
Parameter index adalah required parameter, yaitu parameter yang wajib diisi ketika memanggil array
method splice. index menjelaskan posisi di mana element harus ditambah atau dihapus.
Parameter jumlah adalah optional parameter, yaitu parameter yang boleh diisi, boleh juga dikosongkan.
jumlah menentukan jumlah element yang mau dihapus di array.
Parameter item1, ..., itemX adalah optional parameter. item1, ..., itemX merupakan element baru yang
mau ditambah ke dalam array.
Contoh:
let buah = ["Pisang", "Jeruk", "Apel", "Mangga"];
Parameter pertama bernilai 2, mendefinisikan posisi di mana element baru harus ditambahkan, yaitu di
index ke 2 atau element ke 3 (ingat, index di array dimulai dari angka 0).
Parameter kedua bernilai 0, mendefinisikan jumlah element yang harus dihapus, yaitu berjumlah 0 (tidak
ada yang dihapus).
Parameter ketiga, keempat, dan seterusnya di method splice() mendefinisikan element baru yang ingin
ditambahkan ke dalam array. Jika parameter ketiga dan seterusnya tidak dituliskan, maka tidak ada
element yang ditambahkan. Pada contoh di atas, element ketiga dan keempat adalah "Lemon" dan "Kiwi",
maka kedua element tersebut ditambahkan pada array buah.
Menggabungkan Lebih Dari Satu Array dengan concat()
Method concat() digunakan untuk menggabungkan 2 array atau lebih.
array.slice(mulai, akhir)
Penjelasan syntax di atas:
Parameter mulai adalah optional parameter. mulai menentukan permulaan index dari element yang akan
diambil.
Parameter akhir adalah optional parameter. akhir menentukan batas akhir index element yang akan
diambil (tanpa diikutsertakan). Apabila dikosongkan, maka semua element dimulai dari index mulai
sampai ke element terakhir dari array akan diambil.
Contoh:
let cemilan = ["kripik singkong", "kripik kentang", "krupuk ikan", "permen", "coklat", "kue"];
let cemilanGurih = cemilan.slice(0, 3);
let cemilanManis = cemilan.slice(3);
array.sort(fungsiPembanding)
Contoh:
buah.sort();
bilangan.sort();
console.log(bilangan); // Output: [1, 10, 100, 2, 3.5, 30]
Perhatikan contoh kode di atas! Pada tipe data string, method sort() masih aman digunakan. Ia
mengurutkan element pada array buah secara benar.
Namun jika digunakan pada tipe data number, aneh sekali urutannya bukan? Kenapa angka 100 diurutkan
lebih depan dari angka 2?
Ini dikarenakan method sort() secara default mengurutkan element array berdasarkan nilai string-nya.
Element array dengan angka 100 dianggap lebih kecil dari element array dengan angka 2 dikarenakan
string "1" di 100 lebih kecil dari string "2" di angka 2.
Nah, untuk mengatasi hal tersebut, kita bisa menggunakan ** compare function** atau fungsi
pembanding sebagai parameter di method sort seperti contoh di bawah ini:
Fungsi pembanding akan menghitung apakah a dikurang b akan menghasilkan nilai negatif, positif, atau
0.
array.reverse()
Contoh:
buah.reverse();
buah.sort().reverse();
Array buah akan diurutkan terlebih dahulu element-elementnya dari nilai yang terkecil, hingga yang
terbesar dengan menggunakan sort().
Kemudian, elementnya akan dibalik urutannya berdasarkan index dari yang terbesar hingga yang terkecil
dengan menggunakan reverse().
Namun, saat ini saya cuma ingin memperkenalkan satu properti objek Math saja, yaitu Math.PI. Kalian
tahu π? Jika kalian ingat pelajaran SD dalam menghitung luas lingkaran, maka rumusnya akan seperti ini:
Luas Lingkaran = π r2
Jadi, π hanyalah nilai konstan yang bernilai 3.14 (sebenarnya sih 3.14 sekian sekian sekian.....banyak
banget deh angkanya).
Nah, di JavaScript, apabila kita lupa nilai konstan dari π itu sebenarnya berapa, kita bisa menggunakan
properti Math.PI ini sebagai penggantinya.
Contoh:
let r = 10;
let luasLingkaran = Math.PI * (r ** 2);
console.log(luasLingkaran); // Output: 314.1592653589793
Math
Nah, ini nih bagian serunya. Selain properti, objek Math juga mempunyai method yang pada umumnya
melakukan operasi Matematika. Method di objek Math ada banyak sekali dan di topik ini akan kita bahas
beberapa yang sering digunakan.
Math.abs(x)
Digunakan untuk mengubah angka x yang bernilai negatif menjadi positif.
let bilangan = 6;
let pangkat = 2;
console.log(Math.sqrt(bilangan)); // Output: 8
Math.cbrt(x)
Digunakan untuk menghitung akar pangkat 3 dari x.
let bilangan = 8;
console.log(Math.cbrt(bilangan)); // Output: 2
Math.round(x)
Digunakan untuk membulatkan angka desimal x menjadi bilangan bulat. Pembulatan ke atas bila angka di
belakang koma lebih besar atau sama dengan 5, dan pembulatan ke bawah jika angka di belakang koma
kurang dari 5.
console.log(Math.round(bilangan1)); // Output: 6
console.log(Math.round(bilangan2)); // Output: 5
Math.floor(x)
Digunakan untuk membulatkan angka desimal x ke bawah.
console.log(Math.floor(bilangan1)); // Output: 5
console.log(Math.round(bilangan2)); // Output: 5
Math.ceil(x)
Digunakan untuk membulatkan angka desimal x ke atas.
console.log(Math.ceil(bilangan1)); // Output: 6
console.log(Math.ceil(bilangan2)); // Output: 6
Math.random()
Digunakan untuk menampilkan angka secara acak antara 0 hingga 1 (0 termasuk. 1 tidak).
javascript conditional
Ketika kita menulis sebuah aplikasi, seringkali akan ada beberapa operasi yang akan dijalankan dengan
persyaratan tertentu. Persyaratan itu sendiri nanti kita yang tentukan.
Sebagai contoh dalam kehidupan sehari-hari, jika kita lapar, maka kita makan, dan jika kita tidak lapar,
maka kita tidak makan. Dari contoh tersebut, persyaratan/kondisinya adalah jika kita lapar atau jika kita
tidak lapar. Sementara, keputusan yang dilaksanakan adalah makan atau tidak makan.
Dari contoh tersebut, ada kata kunci yang bisa kita ambil, yaitu jika dan maka. Jika menyatakan sebuah
kondisi, dan maka menyatakan keputusan yang akan dilaksanakan.
Sama seperti di JavaScript, kita juga bisa menyatakan sebuah kondisi dan menyatakan keputusan
(program) yang akan dijalankan.
if (kondisi1) {
// masukkan kode yang akan dijalankan di sini apabila kondisi1 tercapai
}
if...else
Digunakan apabila ada 1 kondisi dan 2 keputusan yang dijalankan.
if (kondisi1) {
// masukkan kode yang akan dijalankan di sini apabila kondisi1 tercapai
} else {
// masukkan kode yang akan dijalankan di sini apabila kondisi1 TIDAK tercapai
}
if...else if...else
Digunakan apabila ada beberapa kondisi dan beberapa keputusan yang dijalankan.
if (kondisi1) {
// masukkan kode yang akan dijalankan di sini apabila kondisi1 tercapai
} else if (kondisi2) {
// masukkan kode yang akan dijalankan di sini apabila kondisi1 tidak tercapai dan kondisi2 tercapai
} else if (kondisi3) {
// masukkan kode yang akan dijalankan di sini apabila kondisi1 dan kondisi2 tidak tercapai, dan
kondisi3 tercapai
} ... {
} else {
// masukkan kode yang akan dijalankan di sini apabila semua kondisi di atas TIDAK tercapai
}
Contoh Penggunaan
Coba bayangkan sebuah aplikasi yang bisa menampilkan kalimat:
if (nilaiAndi > 80) { console.log('SANGAT MEMUASKAN'); }artinya jika variabel nilaiAndi bernilai di
atas 80, maka aplikasi akan menampilkan kalimat "SANGAT MEMUASKAN".
else if (nilaiAndi >= 60 && nilaiAndi <= 80) { console.log('MEMUASKAN'); }, artinya jika variabel
nilaiAndi berada di atas atau sama dengan 60 dan nilaiAndi berada di bawah atau sama dengan 80 (yang
bisa diartikan sebagai jika nilaiAndi berada di antara 60 hingga 80), maka aplikasi akan menampilkan
kalimat "MEMUASKAN".
else { console.log('JANGAN MENYERAH, COBA LAGI!');}, artinya selain kedua kondisi yang telah
disebutkan di if dan else if, maka aplikasi akan menampilkan kalimat "JANGAN MENYERAH, COBA
LAGI!".
Ada cara yang lebih efisien yaitu dengan menggunakan perintah switch dan case.
switch (pernyataan) {
case kondisi1:
// keputusan yang dijalankan ketika kondisi1 tercapai
break;
case kondisi2:
// keputusan yang dijalankan ketika kondisi2 tercapai
break;
case kondisi3:
// keputusan yang dijalankan ketika kondisi3 tercapai
break;
...
default:
// keputusan yang dijalankan ketika semua kondisi tidak tercapai
}
Contoh Penggunaan
Seandainya kita disuruh menulis sebuah aplikasi yang akan menampilkan jenis seragam apa yang harus
dikenakan murid sesuai dengan harinya. Contohnya seperti di bawah ini:
let seragamSekolah;
let hari = "senin";
switch (hari) {
case "senin":
seragamSekolah = "kemeja putih bawahan merah";
break;
case "selasa":
seragamSekolah = "kemeja hijau bawahan hitam";
break;
case "rabu":
seragamSekolah = "kemeja putih bawahan putih";
break;
case "kamis":
seragamSekolah = "kemeja batik merah bawahan hitam";
break;
case "jumat":
seragamSekolah = "baju pramuka";
break;
default:
seragamSekolah = "baju bebas";
}
switch digunakan untuk mendeklarasikan pernyataan yang menjadi patokan kondisi. Pada contoh di atas,
kita akan melihat variabel hari digunakan sebagai patokan kondisi untuk merubah nilai dari variabel
seragamSekolah sesuai dengan nilai hari-nya (kondisi).
case digunakan untuk menulis masing-masing kondisi dari hasil pernyataan yang akan diperiksa. Pada
contoh di atas, jika variabel hari bernilai "senin", maka variabel seragamSekolah bernilai "kemeja putih
bawahan merah", dan seterusnya.
break digunakan untuk menghentikan program berjalan ketika sudah menemukan kondisi yang tercapai.
Pada contoh di atas, program akan berhenti pada case bernilai "senin".
default adalah keputusan yang akan dijalankan apabila hasil pernyataan di switch tidak ada yang sesuai
dengan masing-masing kondisi di case (tidak ada kondisi yang tercapai). Fungsinya sama seperti else di
topik sebelumnya . Pada contoh di atas, apabila nilai variabelhari yang dimasukkan misalnya "sabtu",
maka seragamSekolah akan bernilai "baju bebas".
Apabila kita mempunyai dua atau lebih kondisi yang berbeda, tetapi keputusan yang akan dijalankan
sama, kita bisa menggabungkan beberapa perintah case tanpa menggunakan break dan hanya
menggunakan break di kondisi terakhir.
Misalnya pada contoh kita di atas, murid diharuskan mengenakan seragam "kemeja putih bawahan
merah" untuk hari "senin" sampai "kamis", maka kita bisa mengubah kode di atas menjadi:
let seragamSekolah;
let hari = "senin";
switch (hari) {
case "senin":
case "selasa":
case "rabu":
case "kamis":
seragamSekolah = "kemeja putih bawahan merah";
break;
case "jumat":
seragamSekolah = "baju pramuka";
break;
default:
seragamSekolah = "baju bebas";
}
LOOP
Loop dalam Bahasa Indonesia artinya putaran. Dalam JavaScript, maksudnya adalah perulangan. Jadi,
loop adalah sekumpulan kode yang akan dijalankan berulang kali sampai batas yang ditentukan.
Sebagai contoh, coba tampilkan angka 1 sampai dengan 10 di console. Solusi seperti apakah yang kalian
pikirkan? Apakah seperti ini?
console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);
console.log(6);
console.log(7);
console.log(8);
console.log(9);
console.log(10);
/*
Output:
1
2
3
4
5
6
7
8
9
10
*/
Coba bayangkan jika kalian disuruh untuk menampilkan angka 1 sampai 1000 pada console dengan cara
di atas, mungkin jari kalian sudah pegal-pegal.
for
for...in
for...of
while
do...while
Semua loop di atas pada dasarnya sama saja (terkecuali untuk for..in dan for...of ada sedikit perbedaan),
jadi terserah kalian saja ingin memakai yang mana. Hanya saja, yang sering digunakan pada umumnya
adalah for dan while loop.
Syntax yang digunakan ketika menggunakan for loop adalah sebagai berikut:
/*
Output:
1
2
3
4
5
6
7
8
9
10
*/
Penjelasan contoh di atas:
let i = 1 adalah pernyataan1. Kode tersebut berarti kita mendeklarasikan sebuah variabel baru bernama i
dengan nilai awal 1. Jadi, pada contoh di atas, loop akan dimulai dari angka 1.
i <= 10 adalah pernyataan2. Kode tersebut menentukan kondisi apakah loop bisa dijalankan. Loop akan
terus berjalan apabila nilai variabel i masih di bawah atau sama dengan 10. Pada contoh di atas,
perulangan yang dimaksud adalah menampilkan nilai variabel i pada console.
i++ adalah pernyataan3. Kode tersebut berarti, setiap melakukan satu perulangan, maka tambahkan nilai i
dengan angka 1.
📝 Catatan:
Masih ingat kan fungsi operator ++? Cek topik Operator Aritmatika.
For/In Loop
Berbeda dengan for loop dari topik sebelumnya, for...in digunakan untuk mengulang setiap properti dari
sebuah objek.
Syntax yang digunakan ketika menggunakan for...in loop adalah sebagai berikut:
for (propertiObjek in namaObjek) berarti untuk setiap propertiObjek di namaObjek, maka jalankan kode
di dalam {}. Variabel propertiObjek bisa diganti dengan nama variabel apapun.
Contoh Penggunaan
Seandainya kita memiliki sebuah objek buku, dan kita mau menampilkan masing-masing nama properti
dan nilainya di console. Caranya adalah:
const buku = {
judul: "Harry Potter and The Philosopher's Stone",
pengarang: "J. K. Rowling",
tahun: 1997
};
for (x in buku) {
console.log(x, ':', buku[x]);
}
/*
Output:
judul : Harry Potter and The Philosopher's Stone
pengarang : J. K. Rowling
tahun: 1997
*/
Penjelasan contoh di atas:
for (x in buku) menyatakan untuk setiap properti x yang ada di variabel buku maka jalankan
console.log(x, ':', buku[x]);.
For/Of Loop
Berbeda dengan for loop dari topik sebelumnya, for...of digunakan untuk mengulang setiap element dari
objek yang bisa diulang (contoh array atau string).
Syntax yang digunakan ketika menggunakan for...of loop adalah sebagai berikut:
for (let element of namaVariabel) berarti untuk setiap element di namaVariabel, maka jalankan kode di
dalam {}. Variabel element bisa diganti dengan nama variabel apapun.
Contoh Penggunaan
Seandainya kita memiliki sebuah array yang berisi judul buku, dan kita mau menampilkan setiap element-
nya di console. Caranya adalah:
/*
Output:
Game of Thrones: A Song of Ice and Fire
Harry Potter and The Philosopher's Stone
Lord of The Rings: The Fellowship of The Ring
*/
Penjelasan contoh di atas:
for (let x of buku) menyatakan untuk setiap element x yang ada di variabel buku maka jalankan
console.log(x);.
While Loop
Syntax dalam menggunakan while loop adalah sebagai berikut:
while (kondisi) {
// kode yang akan dijalankan ketika kondisi benar (true)
}
Penjelasan kode di atas:
while (kondisi) berarti ketika kondisi yang ditentukan benar (true), maka jalankan semua kode yang ada
di dalam {}.
Contoh Penggunaan
Kita akan menampilkan angka 1 sampai dengan 10 di console dengan while loop, caranya adalah:
let i = 1;
/*
Output:
1
2
3
4
5
6
7
8
9
10
*/
Penjelasan kode di atas:
Do While Loop
Syntax dalam penggunaan do...while loop adalah:
do {
// kode yang akan dijalankan ketika kondisi benar (true)
} while (kondisi);
Contoh Penggunaan
Kita akan menampilkan angka 1 sampai dengan 10 di console dengan do...while loop, caranya adalah:
let i = 1;
do {
console.log(i);
i++;
} while (i <= 10);
/*
Output:
1
2
3
4
5
6
7
8
9
10
*/
Penjelasan kode di atas:
Jadi untuk mengubah nilai properti dari element HTML, kita bisa menggunakan DOM Property dan
untuk memanggil fungsi dari suatu element HTML, kita bisa menggunakan DOM Method.
Contoh Penggunaan
Misalnya kita mempunyai element HTML sebagai berikut:
console.log(umur); // Output: 20
Penjelasan kode di atas:
document adalah akar dari semua objek di sebuah website. Jadi untuk mengakses element HTML apapun
di satu website, selalu dimulai dengan objek document ini.
getElementById merupakan method dari objek document.
value merupakan properti dari objek element HTML yang dikembalikan dari method getElementById
yaitu <input>.
Karena ada banyak sekali jenis properti dan method di JavaScript HTML DOM, di topik selanjutnya kita
akan membahas beberapa contoh penggunaan properti dan method yang seringkali digunakan.
console.log(umur); // Output: 20
Sebelum kita bisa mengambil nilai attribute value dari element HTML <input> di JavaScript, kita terlebih
dahulu harus mengakses ke element <input>. Di contoh di atas, kita menggunakan salah satu DOM
Method untuk mengakses element HTML yaitu getElementById.
Di topik ini, kita akan bahas lebih lanjut DOM method lainnya untuk mengakses element HTML.
getElementById(id)
Method yang ini sudah kita lihat beberapa kali dari contoh-contoh sebelumnya. Kita bisa menggunakan
getElementById untuk mengakses element HTML berdasarkan nilai id-nya.
getElementsByTagName(tag)
Untuk mengakses element-element HTML berdasarkan jenis tag-nya, kita bisa menggunakan
getElementsByTagName.
Contoh:
Contoh:
Contoh:
DOM Event
Di topik Pengenalan JavaScript HTML DOM, kita tahu bahwa salah satu kegunaan dari DOM adalah
untuk berinteraksi dengan HTML Event di suatu website.
Pernahkan ketika kita klik 1 tombol di satu website, terkadang akan muncul popup window yang
menyampaikan suatu pesan. Salah satu cara untuk melakukan itu adalah dengan menggunakan DOM
Event.
Ada banyak sekali tipe HTML Event di JavaScript. Kali ini kita hanya akan membahas onclick yaitu
HTML Event yang akan terjadi ketika user klik suatu element HTML.
onclick = kodeJavaScript
Contoh Penggunaan
Seandainya kita mempunyai satu <button> yang akan menampilkan popup window dengan pesan "Hello,
World!", maka caranya kira-kira seperti ini:
function showMessage() {
alert("Hello, World!");
}
Element Attribute Cat
Penjelasan kode di atas:
Di baris demo.onclick = showMessage;, kita menambahkan event onclick ke element <button
id="demo"> dan memberi nilai showMessage yang merupakan fungsi untuk menampilkan alert dengan
tulisan "Hello, World!".
Jadi ketika <button id="demo"> di-klik, maka alert window dengan tulisan "Hello, World!" akan muncul,
sesuai dengan gambar di atas.
📝 Catatan:
Contoh di atas adalah salah satu dari banyak syntax untuk menambahkan onclick event di JavaScript.
Masih ada banyak sekali DOM Property, Method, dan Event lainnya di JavaScript. Kita akan bahas
fungsi DOM lainnya di kelas JavaScript berikutnya.
Contoh:
Contoh:
catImage.src = "https://bit.ly/3j6YdWJ";
catImage.alt = "Fish";
catImage.width = "400";
Di baris console.log(catImage.src);, kita hanya menampilkan nilai attribute src dari element <img id="cat-
image">. Waktu kode itu dijalankan, nilai attribute src dari element <img id="cat-image"> masih bernilai
https://bit.ly/2FKluzq.
Di baris console.log(catImage.alt);, kita hanya menampilkan nilai attribute alt dari element <img id="cat-
image">. Waktu kode itu dijalankan, nilai attribute alt dari element <img id="cat-image"> masih bernilai
Cat.
Kode berikutnya yaitu cat.src = "https://bit.ly/3j6YdWJ"; kita akan memberikan nilai baru ke attribute
src-nya <img id="cat-image">.
Begitu juga di kode berikutnya yaitu cat.alt = "Fish"; kita akan memberikan nilai baru ke attribute alt-nya
<img id="cat-image">.
Kode berikutnya yaitu catImage.width = "400"; kita akan menambah attribute width ke element <h1
id="demo"> dengan nilai 400.
Apabila kita cek halaman website kita di browser, <img id="cat-image"> yang tadinya menampilkan foto
kucing akan berubah menjadi foto ikan setelah kode JavaScript di atas dijalankan.
element.setAttribute(attribute, nilai)
setAttribute(attribute, nilai) fungsinya hampir sama dengan element.attribute = nilai hanya saja
setAttribute itu termasuk DOM Method sedangkan element.attribute itu DOM Property.
Contoh:
catImage.setAttribute("src", "https://bit.ly/3j6YdWJ");
catImage.setAttribute("alt", "Fish");
catImage.setAttribute("width", "400");
Contoh:
demo.style.color = "red";
demo.style.fontSize = "18px";
Di baris console.log(demo.style.color);, kita hanya menampilkan nilai properti style color dari element
<h1 id="demo">. Waktu kode itu dijalankan, nilai properti style color dari element <h1 id="demo">
masih bernilai blue.
Kode berikutnya yaitu demo.style.color = "red"; kita akan memberikan nilai baru ke properti style color
dari element <h1 id="demo">.
Kode berikutnya yaitu demo.style.fontSize = "18px"; kita akan menambah properti style fontSize ke
element <h1 id="demo">.
Apabila kita cek halaman website kita di browser, <h1 id="demo"> yang tadinya menampilkan tulisan
Hello, World! dengan warna biru akan berubah menjadi tulisan warna merah dengan ukuran tulisan 18px
setelah kode JavaScript di atas dijalankan.
ECMAScript
JavaScript
Sampai modul ini, kalian pasti sudah mengenal lebih dalam tentang JavaScript: bahasa pemrograman
yang esensial dalam pengembangan aplikasi web interaktif. Hampir semua pengembang web mengenal
bahasa ini, mulai dari syntax sampai fitur-fiturnya.
Tapi apa kalian tahu kalau syntax dan fitur bahasa JavaScript mengalami pembaruan setiap beberapa
tahun?
Benar, JavaScript yang kalian kenal sekarang memiliki beberapa fungsi yang belum ada 5-10 tahun yang
lalu:
method .forEach() untuk array belum dikenal sebelum ES5 pada tahun 2009.
sebelum ES6 pada tahun 2015, untuk melakukan operasi pangkat kita harus menggunakan Math.pow()
tidak bisa langsung dengan operator eksponen **.
"ES5? ES6? Apa sih maksudnya? Baru denger"
ECMAScript
ES itu adalah singkatan dari ECMAScript. Jadi ES6 itu salah satu versi dari ECMAScript. ES sendiri
bukan sebuah bahasa, melainkan sebuah spesifikasi, atau bahasa sederhananya, standar. Standar di sini
adalah sekumpulan kriteria teknis yang harus dipenuhi. Dipenuhi oleh siapa? Tentunya dalam kasus ini
adalah JavaScript.
Mengerti ya perbedaannya? Jadi kalau kalian ditanya "Apa bedanya ECMAScript dan JavaScript?", tahu
jawabannya kan.
JavaScript adalah salah satu bahasa pemrograman yang mengikuti standar ECMAScript.
Asal kalian tahu saja, yang mengikuti standar ECMAScript itu bukan hanya JavaScript lho. Masih ada
ActionScript dan JScript, tapi JavaScript itu tetap yang paling populer sampai saat ini.
Pada topik-topik berikutnya, kita akan membahas mengenai salah satu versi dari ECMAScript, lebih
tepatnya ES6.
console.log(bilanganPi); // Output: 3
bilanganPi = 3.2;
console.log(bilanganPi); // Output: 3.2
Penggunaan let cocok untuk variabel yang nilainya memang bisa berubah-ubah. Bagaimana kalau kita
ingin variabel tersebut tidak bisa diubah nilainya?
Nah, variabel yang dideklarasikan dengan const itu tidak bisa diberi nilai baru.
Contoh:
// pemberian array baru pada variabel dengan `const` akan menampilkan error
warna = ["hijau", "abu", "biru"]; // Output TypeError: Assignment to constant variable
Namun lihat pada saat kita menggunakan method push() pada variabel warna. Tidak ada error. Kenapa?
Karena kita memang hanya mengubah nilai (menambah element baru) dari variabel warna, bukan
memberinya nilai baru.
Deklarasi variabel menggunakan var tidak akan memunculkan error walaupun variabel dengan nama
yang sama sudah pernah dideklarasikan. Jadi misalkan kita pernah membuat sebuah variabel, lalu entah
karena lupa atau tidak sengaja kita membuat variabel dengan nama yang sama, nilai dari variabel yang
pertama akan ditimpa dengan yang baru.
Contoh:
// kalau kita coba deklarasi lagi dengan nama variabel yang sama
// akan muncul error
const nama = "Farhan"; // Output SyntaxError: Identifier 'nama' has already been declared
let umur = 21; // Output SyntaxError: Identifier 'nama' has already been declared
Dengan begini kita jadi tahu bahwa sudah pernah ada variabel dengan nama yang sama.
Sebuah variabel yang dideklarasikan di dalam blok if-else, switch-case, while, dan for seharusnya
memang tidak bisa diakses dan diubah nilainya dari luar blok tersebut.
Contoh:
Template Literal
Template Literal
Template literal adalah cara untuk menanamkan ekspresi JavaScript ke dalam sebuah string. Template
literal dibungkus dengan sepasang tanda `(backtick), dan ekspresi JavaScript-nya dibungkus dengan tanda
${ }.
*"Jadi di tengah-tengah string nanti bisa ada variabel atau operasi matematika gitu?"*
```javascript
let nama = "sarah";
let umur = 24;
console.log(kalimat);
/*
Output:
"Namanya sarah. Umurnya 24 tahun."
*/
Pada contoh di atas, variabel nama dan umur akan dievaluasi nilainya menjadi "sarah" dan 24. Kedua
nilai ini baru dimasukkan menjadi bagian dari string.
Template Literal
Seperti yang tadi dibahas, kita juga bisa memasukkan operasi matematika atau operasi logika dengan
template literal. Contohnya seperti ini:
Jangankan variabel dan operasi matematika, fungsi pun bisa. Perhatikan contoh berikut:
function ucapkanSalam() {
return "Selamat Pagi";
};
Di Javascript ES6, ada cara baru dalam penulisan sebuah fungsi, yaitu menggunakan arrow function.
Kelebihan menggunakan arrow function adalah penulisan fungsi menjadi lebih singkat dan lebih mudah
dibaca.
// Arrow function
const namaFungsi = (parameter1, ..., parameterX) => {
// kode yang ingin dijalankan dalam fungsi
};
function greeting(nama) {
return `Hi ${nama}`;
}
Default Parameter
Parameter adalah syarat input yang harus dimasukkan ke dalam suatu fungsi dan dideklarasikan bersama
dengan deklarasi fungsi.
Sementara argument adalah nilai yang dimasukkan ke dalam suatu fungsi, sesuai dengan persyaratan
parameter, di mana argument dituliskan bersamaan dengan pemanggilan fungsi.
Contoh
panggang("Roti", "10 menit", "100 C"); // Output: Panggang Roti selama 10 menit pada suhu 100 C
Pada contoh di atas, (bahan, durasi, suhu) itu merupakan parameter dari fungsi panggang. Artinya saat
kita memanggil fungsi tersebut, ia akan menantikan argument yang sesuai dengan parameternya. Dalam
kode di atas, argumentnya adalah "Roti", "10 menit", dan "100 C".
Apa yang terjadi kalau kita lupa memberinya argument yang sesuai dengan parameternya?
console.log(panggang());
// Output: Panggang undefined selama undefined pada suhu undefined
Pada dasarnya jika kita tidak memberi argument padahal fungsi tersebut menantikan sebuah argument,
nilai default yang akan dipakai adalah undefined..
Pada contoh kode di atas mungkin tidak ada error, tapi bagaimana jika kodenya seperti di bawah ini:
function cetakNama(orang) {
return orang.nama;
}
Default Parameter
Default parameter adalah nilai pengganti yang akan diberikan ke sebuah fungsi apabila fungsi tersebut
tidak diberikan argument yang cocok dengan parameter fungsi tersebut (atau argument yang diberikan
bernilai undefined).
panggang("Risoles", "5 menit"); // Output: Panggang Risoles selama 5 menit pada suhu yang cocok
panggang(); // Output: Panggang makanannya selama yang diperlukan pada suhu yang cocok
Contoh:
Coba cermati parameter params. Ada ... (elipsis) di depannya kan? Parameter yang diawali dengan elipsis
menandakan ia adalah sebuah rest parameter. Jika sebuah fungsi dengan satu parameter berupa rest
parameter dipanggil dan diberikan satu atau lebih argument, rest parameter-nya akan mewakili semua
argument-argument tersebut.
Contoh:
Pada dasarnya, hanya bisa ada satu rest parameter dalam sebuah fungsi. Dan dia harus ditempatkan di
paling belakang. Kalau tidak, akan muncul error saat kita mendeklarasikan fungsinya.
Contohnya:
let orang = {
nama: "Yudistya",
umur: 32
};
Untuk menambahkan beberapa properti lainnya, kita bisa melakukan ini:
orang.pekerjaan = "arsitek";
orang.pendidikan = "S1";
atau bisa juga lebih singkat dengan menggunakan spread operator seperti ini:
Spread operator juga memungkinkan kita untuk menggabungkan dua (atau lebih) objek.
Sebelum ES6, kita harus menggunakan method .assign() dari Object seperti ini:
Destrukturisasi
Destrukturisasi Array
Sebelum ES6, cara untuk menyimpan nilai dari masing-masing element dari sebuah array ke dalam
variabel adalah sebagai berikut:
Untungnya ES6 menyediakan cara untuk mendapatkan hasil yang sama dengan cara yang lebih singkat.
Syntax-nya mirip dengan cara mendeklarasikan sebuah array, namun kali ini nama array-nya ada di
sebelah kanan dan variabel untuk menyimpan element-element yang ingin dibongkar ada di sebelah kiri.
Contoh:
Kalian juga bisa memilih element mana saja yang tidak ingin disimpan di dalam variabel dengan
menggunakan "koma kosong", atau tidak menyebutkan element tersebut saat destrukturisasi.
Contoh:
Kalian ingin menukar nilai dari dua variabel (atau lebih) dengan lebih cepat dan tanpa menggunakan
variabel tambahan? Bisa pakai destrukturisasi array.
let a = 10;
let b = 15;
let a = 10;
let b = 15
[a,b] = [b,a];
// nilai a sekarang adalah 15, dan nilai b adalah 10
Destrukturisasi Objek
Sama seperti destukturisasi array, sebelum ES6, kita harus menulis assignment satu per satu untuk tiap
nilai dalam objek yang kita ingin bongkar. Seperti ini:
let orang = {
nama: "Joko",
umur: 18,
sudahMenikah: false
};
Misalnya:
let orang = {
nama: "Joko",
umur: 22,
sudahMenikah: false
};
// Destrukturisasi Objek
let { nama, umur, statusMenikah } = orang;
let {
namaProperti1: namaVariabelBaru1,
namaProperti2: namaVariabelBaru2
} = namaObjek;
Contoh:
let orang = {
name: "Joko",
age: 22,
};
// buat variabel nama berisi nilai dari properti name pada orang
// buat variabel age berisi nilai dari properti umur pada orang
let { name: nama, age: umur } = orang;
Bisa!
let murid = {
kelas: "12a",
nama: ["ani", "yahya", "sinto"],
prestasi: {
olahraga: "juara 1",
akademik: "juara 2"
}
};
let {
prestasi: { olahraga }
} = murid;
Destruksturisasi Array
Sebelum ES6, cara unuk menyimpan nilai dari masing-masing element dari sebuah array ke dalam
variable adalah sebagai berikut:
Let buah = [“mangga”, “pisang”, “anggur”];
Let buah1 = buah[0];
Let buah2 = buah[1];
Let buah3 = buah[2];
console.log(buah1); // Output: mangga
console.log(buah2); // Output: pisang
console.log(buah3); // Output: anggur
selain tidak efisien karena harus menulis assignment untuk tiap variable, kita juga harus menghitung nilai
yang ingin kita ambil itu ada di index keberapa.
Untungnya ES6 menyediakan cara untuk mendapatkan hasil yang sama dengan cara yang lebih singkat.
Syntax-nya mirip dengan cara mendeklarasi sebuah array, namun kali ini nama array-nya ada disebelah
kanan dan variable untuk menyimpan element-element yang ingin dibongkar ada disebelah kiri.
Contoh:
// cara mendeklarasikan variabel berupa array
let namaArray = [element1, element2, element3];
Contoh:
// gunakan koma kosong untuk melewati element kedua dan keempat
let [namaDepan, , namaBelakang, , buku] = ["Joanne", "K", "Rowling", "pengarang", "Harry Potter"];
Kalian ingin menukar nilai dari dua variabel (atau lebih) dengan lebih cepat dan tanpa menggunakan
variabel tambahan? Bisa pakai destrukturisasi array.
[a,b] = [b,a];
// nilai a sekarang adalah 15, dan nilai b adalah 10
Destrukturisasi Objek
Sama seperti destukturisasi array, sebelum ES6, kita harus menulis assignment satu per satu untuk tiap
nilai dalam objek yang kita ingin bongkar. Seperti ini:
let orang = {
nama: "Joko",
umur: 18,
sudahMenikah: false
};
Misalnya:
let orang = {
nama: "Joko",
umur: 22,
sudahMenikah: false
};
// Destrukturisasi Objek
let { nama, umur, statusMenikah } = orang;
let {
namaProperti1: namaVariabelBaru1,
namaProperti2: namaVariabelBaru2
} = namaObjek;
Contoh:
let orang = {
name: "Joko",
age: 22,
};
// buat variabel nama berisi nilai dari properti name pada orang
// buat variabel age berisi nilai dari properti umur pada orang
let { name: nama, age: umur } = orang;
let {
prestasi: { olahraga }
} = murid;
Object Shorthand
Object Shorthand di Variabel
Object shorthand di variabel sebenarnya kebalikan dari destrukturisasi objek, jika destrukturisasi objek
menyimpan nilai property objek variable, maka objek shorthand menyimpan nilai variable di property
objek.
Jika ada beberapa variable yang nilainya ingin dijadikan sebaai property sebuah objek, maka cara
mendeklarasikan objek tersebut adalah sebagai berikut:
let suaraHewan = {
suaraKucing: suaraKucing,
suaraAnjing: suaraAnjing,
suaraTikus: suaraTikus
};
Coba bayangkan, bagaimana kalau variabel yang mau disimpan di dalam properti objeknya ada banyak?
Ada cara lebih singkat ketika menuliskan objek di atas, yaitu dengan menggunakan object shorthand.
Aturan utama ketika menggunakan cara object shorthand adalah nama variabel dan nama properti di
objek yang bersangkutan harus sama.
Contoh:
let suaraKucing = "Meow";
let suaraAnjing = "Gukguk";
let suaraTikus = "Citcitcit";
let suaraHewan = { suaraKucing, suaraAnjing, suaraTikus };
console.log(suaraHewan); // Output: { suaraKucing: 'Meow', suaraAnjing: 'Gukguk', suaraTikus:
'Citcitcit' }
console.log(suaraHewan.suaraKucing); // Output: Meow
console.log(suaraHewan.suaraAnjing); // Output: Gukguk
console.log(suaraHewan.suaraTikus); // Output: Citcitcit
Contoh:
// Pada JavaScript ES5 (tanpa object shorthand)
function membuatBiodata(nama, umur, jenisKelamin) {
return {
nama: nama,
umur: umur,
jenisKelamin: jenisKelamin
};
}
console.log(membuatBiodata("Andi", 22, "pria")); // Output: { nama: 'Andi', umur: 22, jenisKelamin:
'pria' }
// Di sini selain menggunakan object shorthand, kita juga akan menggunakan arrow function dari ES6
let membuatBiodata = (nama, umur, jenisKelamin) => {
return { nama, umur, jenisKelamin };
};
console.log(membuatBiodata("Andi", 22, "pria")); // Output: { nama: 'Andi', umur: 22, jenisKelamin:
'pria' }
Namun dengan object shorthand, objek di atas bisa ditulis dengan cara berikut:
let operasiMatematika = {
nama: "Penjumlahan",
operasi(angka1, angka2) {
let hasil = angka1 + angka2;
return `${this.nama} dari ${angka1} dan ${angka2} adalah ${hasil}`;
}
};
console.log(operasiMatematika.operasi(3, 5)); // Output: Penjumlahan dari 3 dan 5 adalah 8
Perhatikan perbedaan cara mendeklarasikan method operasi di kedua contoh di atas. Dengan cara object
shorthand, kita tidak perlu lagi menulis nama properti secara spesifik selama nama fungsi sama dengan
nama properti di objek yang bersangkutan.