Bab ini secara singkat merekap fitur JavaScript yang sudah kita pelajari sekarang, membayar perhatian khusus ke momen-momen halus.
Struktur kode
Pernyataan didelimisi dengan semicolon:
alert('Hello'); alert('World');
Biasanya, line-break juga diperlakukan sebagai delimiter, jadi itu juga akan bekerja:
alert('Hello')
alert('World')
Itu disebut “penyisipan semicolon otomatis”. Kadang ia tidak bekerja, misalnya:
alert("There will be an error after this message")
[1, 2].forEach(alert)
Kebanyakan panduan codestyle setuju bahwa kita sebaiknya menaruh semicolon di tiap akhir pernyataan.
Semicolon tak dibutuhkan setelah blok kode {...}
dan konstruksi syntax dengan mereka yang seperti loop:
function f() {
// semicolon tak dibutuhkan setelah deklarasi fungsi
}
for(;;) {
// semicolon tak dibutuhkan setelah loop
}
…Tapi meskipun kita taruh semicolon “extra” di suatu tempat, itu bukan galat. Ia akan diabaikan.
Lebih lanjut di: Struktur kode.
Mode ketat
Untuk mengaktifkan penuh semua fitur modern JavaScript, kita sebaiknya mulai script dengan "use strict"
.
'use strict';
...
Directive ini harus ada di paling atas script atau di awal badan fungsi.
Tanpa "use strict"
, apapun akan bekerja, tapi beberapa fitur bersikap dengan cara kuno, “kompatibel”. Secara umum kita akan pilih sikap modern.
Beberapa fitur modern bahasa ini (seperti kelas yang akan kita pelajari di kemudian) mengaktifkan mode ketat secara implisit.
Lebih lanjut di: The modern mode, "use strict".
Variabel
Bisa dideklarasi menggunakan:
let
const
(konstan, tak bisa berubah)var
(kuno, akan lihat kemudian)
Nama variabel bisa mengandung:
- Huruf dan digit, tapi karakter pertama bisa tak boleh digit.
- Karakter
$
dan_
itu normal, setara dengan huruf. - Alfabet non-latin dan hieroglyph juga boleh, tapi jarang dipakai.
Variabel adalah tipe dinamis. Mereka bisa menyimpan nilai apapun:
let x = 5;
x = "John";
Terdapat 8 tipe data:
number
untuk floating-point(bilangan pecahan) dan integer,bigint
untuk integer yang sangat panjang,string
untuk string,boolean
untuk nilai logik:true/false
,null
tipe data dengan nilai tunggalnull
, yang sama dengan “empty/kosong” atau “does not exist/tidak ada nilai”,undefined
– tipe data dengan nilai tunggalundefined
, yang sama dengan “not assigned/belum didefinisikan”,object
dansymbol
– untuk struktur data yang kompleks dan identifier unik, sampai saat ini kita belum belajar ini.
Operator typeof
mengembalikan tipe untuk satu nilai, dengan dua pengecualian:
typeof null == "object" // galat di bahasa
typeof function(){} == "function" // fungsi diperlakukan spesial
Lebih lanjut di: Variabel and Tipe data.
Interaksi
Kita menggunakan peramban sebagai lingkungan kerja, jadi fungsi UI dasar akan menjadi:
prompt(question, [default])
- Menanyakan
question
, dan mengembalikan apa yang pengunjung isikan ataunull
jika mereka mengklik “cancel”. confirm(question)
- Menanyakan
question
dan menyarakan memilih antara Ok dan Cancel. Pilihannya dikembalikan sebagaitrue/false
. alert(message)
- Menampilkan a
message
.
Semua fungsi ini adalah modal, mereka menyela exekusi kode dan mencegah pengunjung dari berinteraksi dengan laman hingga mereka menjawab.
Misalnya:
let userName = prompt("Your name?", "Alice");
let isTeaWanted = confirm("Do you want some tea?");
alert( "Visitor: " + userName ); // Alice
alert( "Tea wanted: " + isTeaWanted ); // true
Lebih lanjut di: Interaksi: alert, prompt, confirm.
Operator
JavaScript mendukung operator berikut:
- Arithmatika
-
Regular:
* + - /
, juga%
untuk remainder dan**
untuk pangkat bilangan.Operator biner plus
+
menggabungkan string. Dan juka ada operan yang string, maka yang lainnya akan diubah menjadi string juga:alert( '1' + 2 ); // '12', string alert( 1 + '2' ); // '12', string
- Penetapan
-
Ada penetapan simpel:
a = b
dan penetapan kombinasi sepertia *= 2
. - Bitwise
-
Operator bitwise bekerja dengan integer 32-bit di bit-level paling kecil: lihat docs ketika mereka dibutuhkan.
- Kondisional
-
Satu-satunya operator dengan tiga parameter:
cond ? resultA : resultB
. Jikacond
truthy, mengembalikanresultA
, jika tidakresultB
. - Operator logika
-
Logika AND
&&
dan OR||
menyajikan evaluasi sirkuit-pendek dan mengembalikan nilai di mana ia berhenti. Logika NOT!
mengkonversi operand ke tipe boolean dan mengembalikan nilai kebalikannya. - Nullish coalescing operator/Operator penggabung nullish
-
Operator
??
menyediakan cara untuk memilih nilai yang terdefinisikan dari sebuah daftar variabel. Hasil daria ?? b
adalah a kecuali jika nilainyanull/undefined
, lalub
. - Perbandingan
-
Persamaan nilai
==
dari type yang berbeda akan mengubahnya menjadi angka (kecualinull
danundefined
yang sama dengan nilai itu sendiri), jadi contoh dibawah adalah sama:alert( 0 == false ); // true alert( 0 == '' ); // true
Pembandingan lainnya tentu saja mengubah nilainya menjadi angka.
Operator pembanding
===
tidak melakukan perubahan tipe: untuk operator pembanding ini, berbeda tipe sama dengan berbeda nilai.Nilai
null
danundefined
adalah spesial: mereka sama==
satu sama lainnya dan tidak sama dengan nilai lain manapun.Pembanding lebih/kurang dari membandingkan string karakter-demi-karakter, tipe lain akan diubah menjadi angka.
- Operator lainnya
-
Ada beberapa operator lainnya, seperti operator koma.
Lebih lanjut di: Operator dasar, maths, Perbandingan, Operator logika, Operator penggabungan nullish '??'.
Loop
-
Kita meliput 3 tipe loop:
// 1 while (condition) { ... } // 2 do { ... } while (condition); // 3 for(let i = 0; i < 10; i++) { ... }
-
Variabel yang dideklarasi di loop
for(let...)
terlihat cuma di dalam loop. Tapi kita juga bisa membuanglet
dan memakai kembali variabel yang sudah eksis. -
Directive
break/continue
membolehkan untuk keluar iterasi loop/current. Guakan label untuk menghancurkan loop bersarang.
Detil di: Perulangan: while dan for.
Nanti kita akan pelajari tipe loop lainnya untuk berhadapan dengan object.
Konstruksi “switch”
Konstruksi “switch” bisa mengganti pengecekan ganda if
. Ia memakai ===
(ekualitas ketat) untuk pembandingan.
Misalnya:
let age = prompt('Your age?', 18);
switch (age) {
case 18:
alert("Won't work"); // hasil dari prompt adalah string, bukan angka
break;
case "18":
alert("This works!");
break;
default:
alert("Any value not equal to one above");
}
Detal di: Pernyataan "switch".
Fungsi
Kita meliput tiga cara membuat fungsi di JavaScript:
-
Deklarasi Fungsi: fungsi di aliran kode utama
function sum(a, b) { let result = a + b; return result; }
-
Expresi Fungsi: fungsi di dalam kontex expresi
let sum = function(a, b) { let result = a + b; return result; };
-
Fungsi panah:
// expresi di sisi kanan let sum = (a, b) => a + b; // atau syntax baris-ganda dengan { ... }, butuh kembalian di sini: let sum = (a, b) => { // ... return a + b; } // tanpa argumen let sayHi = () => alert("Hello"); // dengan argumen tunggal let double = n => n * 2;
- Fungsi bisa punya variabel lokal: mereka yang dideklarasi dalam badannya. Variabel macam itu cuma terlihat di dalam fungsi.
- Parameter bisa punya nilai default:
function sum(a = 1, b = 2) {...}
. - Fungsi selalu mengembalikan sesuatu. Jika tak ada pernyataan
return
, maka kembaliannyaundefined
.
Detil: lihat Fungsi, Dasar-dasar fungsi Arrow.
Lebih banyak yang akan datang
Ini daftar ringkas fitur JavaScript. Untuk sekarang kita belajar hanya dasar. Kemudian di tutorial nanti kamu akan menemui fitur JavaScript yang lebih canggih dan spesial.
komentar
<code>
, untuk beberapa baris – bungkus dengan tag<pre>
, untuk lebih dari 10 baris – gunakan sandbox (plnkr, jsbin, < a href='http://codepen.io'>codepen…)