1 of 311

JavaScript Dasar

Eko Kurniawan Khannedy

2 of 311

Eko Kurniawan Khannedy

  • Technical architect at one of the biggest ecommerce company in Indonesia
  • 10+ years experiences
  • www.programmerzamannow.com
  • youtube.com/c/ProgrammerZamanNow

3 of 311

Eko Kurniawan Khannedy

4 of 311

Sebelum Belajar

  • HTML
  • CSS

5 of 311

Agenda

  • Pengenalan JavaScript
  • Tipe Data
  • Variable
  • Percabangan
  • Perulangan
  • Function
  • Dan lain-lain

6 of 311

Pengenalan JavaScript

7 of 311

Sejarah JavaScript

  • JavaScript atau sering disingkat JS, pertama kali dibuat tahun 1995. Programmer di Netscape bernama Brandan Eich membuat sebuah bahasa pemrograman scripting untuk berjalan di Netscape Navigator Browser.
  • Awalnya namanya adalah Mocha, lalu berubah menjadi LiveScript, dan akhirnya menjadi JavaScript.
  • JavaScript dibuat agar halaman website yang sudah kita buat menggunakan HTML dan CSS bisa lebih interaktif
  • JavaScript sekarang sudah mengalahkan Java Applet dan Flash sebagai bahasa pemrograman untuk membuat halaman web menjadi lebih interaktif, hal ini dikarenakan kemudahan bahasa nya dan juga secara default sekarang semua browser sudah bisa menjalankan JavaScript tanpa harus menginstall aplikasi tambahan seperti Java Applet dan Adobe Flash Player

8 of 311

JavaScript di Server

  • Awalnya JavaScript memang kebanyakan di gunakan untuk berjalan di client side (Browser)
  • Namun akhir-akhir ini, semenjak keluar teknologi NodeJS yang bisa digunakan untuk menjalankan JavaScript tanpa browser, sekarang akhirnya JavaScript juga banyak digunakan untuk membuat aplikasi di Server
  • Karena ini, akhirnya sekarang JavaScript dikenal dengan bahasa pemrograman FullStack (Backend dan Frontend) karena bisa digunakan untuk membuat aplikasi Backend dan aplikasi Frontend

9 of 311

JavaScript dan ECMAScript

  • Karena JavaScript sekarang hampir di adopsi oleh sebua aplikasi browser, akhirnya dibuatlah sebuah standarisasi yang bernama ECMAScript
  • Organisasi yang melakukan standarisasi ECMAScript adalah ECMA International
  • Sekarang dengan adanya standarisasi, kita bisa pastikan bahwa kode program JavaScript kita bisa jalan di semua browser, karena browser yang ingin mendukung JavaScript, harus mengikuti standarisasi ECMAScript
  • Sekarang karena ECMAScript dan JavaScript sama, sekarang bisa dibilang ECMAScript dan JavaScript adalah dua nama untuk satu bahasa pemrograman yang sama
  • https://www.ecma-international.org/

10 of 311

JavaScript vs Java

  • Pemula programmer sering salah tentang JavaScript dan Java. Ada yang mengira bahwa Java dan JavaScript adalah bahasa pemrograman yang sama, padahal itu berbeda.
  • Java adalah bahasa pemrograman lain, tidak ada hubungannya dengan JavaScript
  • Walaupun namanya ada kata “Java” nya, tapi dua bahasa pemrograman ini benar-benar berbeda, tidak ada hubungannya sama sekali
  • Jika tertarik untuk belajar bahasa pemrograman Java, silahkan belajar disini : https://www.programmerzamannow.com/video-tutorial-java/

11 of 311

Peralatan Development

  • Saat kita belajar JavaScript, kita perlu menyiapkan beberapa perangkat lunak untuk membantu development
  • Browser, ini sudah pasti, karena kita perlu menjalankan kode program JavaScript menggunakan Browser
  • Text Editor atau Integrated Development Environment, ini digunakan untuk membuat kode program JavaScript

12 of 311

Browser

13 of 311

Text Editor atau IDE

14 of 311

Program Hello World

15 of 311

Membuat Kode JavaScript

  • Ada beberapa cara untuk membuat kode JavaScript
  • Bisa langsung di file HTML
  • Atau bisa menggunakan file .js (ekstensi untuk JavaScript), lalu di include di dalam file HTML
  • Pada praktek course ini kita akan menggunakan HTML langsung agar mudah membuat kode program nya

16 of 311

Script JavaScript

17 of 311

Include Script JavaScript

18 of 311

Titik Koma

  • JavaScript mirip seperti bahasa pemrograman C/C++, dimana di akhir tiap statement kode program, kita perlu menambahkan ; (titik koma)
  • Namun, di JavaScript tanda ; (titik koma) tidak wajib, jadi kita bisa menambahkan ataupun tidak.
  • Sangat disarankan konsisten, jika ingin menggunakan titik koma, gunakan disemua tempat, jika tidak, jangan gunakan di semua tempat
  • Saya sendiri lebih merekomendasikan menggunakan titik koma

19 of 311

Komentar

20 of 311

Komentar

  • Komentar adalah kode program yang tidak akan dieksekusi ketika dibaca
  • Komentar biasanya digunakan sebagai informasi tambahan atau petunjuk
  • Di JavaScript, kita bisa menambahkan kode komentar

21 of 311

Kode : Komentar

22 of 311

Tipe Data Number

23 of 311

Tipe Data Number

  • JavaScript hanya mendukung satu tipe data number, dimana tipe data number di JavaScript bisa berupa bilangan bulat atau bilangan desimal
  • Tipe seperti di bahasa pemrograman lain yang biasanya membedakan tipe data number bilangan bulat dan bilangan desimal, di JavaScript semuanya disatukan

24 of 311

Kode : Tipe Data Number

25 of 311

Number Notation

  • JavaScript mendukung number notation, defaultnya ada basis 10, JavaScript juga mendukung binary, hexadecimal dan octal
  • Hexadecimal : 0xFF
  • Binary : 0b10101
  • Octal : 0o10

26 of 311

Tipe Data Boolean

27 of 311

Tipe Data Boolean

  • Tipe data boolean adalah tipe data yang berisikan data kebenaran, artinya hanya ada dua data, benar dan salah (yes atau no)
  • Benar di representasikan dengan kata kunci true, dan salah direpresentasikan dengan kata kunci false
  • Walaupun tipe data boolean merupakan tipe data yang sangat sederhana, tapi tipe data boolean akan banyak digunakan di berbagai fitur pemrograman

28 of 311

Kode : Tipe Data Boolean

29 of 311

Tipe Data String

30 of 311

Tipe Data String

  • Tipe data string atau text adalah tipe data yang berisikan kumpulan kosong atau lebih karakter
  • Sebelumnya kita sudah pernah menggunakan string ketika membuat program hello world.
  • Di JavaScript, untuk membuat data dengan tipe string, kita perlu menggunakan “ (petik dua) atau ‘ (petik satu) sebelum dan setelah isi text nya

31 of 311

Kode : Tipe Data String

32 of 311

Menambah String

  • Data string bisa digabung menggunakan operator + (plus)

​

33 of 311

Kode : Menambah String

34 of 311

Escape Sequence

  • JavaScript mendukung escape sequence di string. Escape sequence merupakan karakter khusus, seperti ENTER, TAB, " (kutip dua), dan lain-lain. Berikut contoh escape sequence yang didukung oleh JavaScript di data string

\n

ENTER

\t

TAB

\’

‘

\”

“

\\

\

35 of 311

Kode : Escape Sequence

36 of 311

Variable

37 of 311

Kode : Tanpa Variable

38 of 311

Variable

  • Variable adalah tempat untuk menyimpan data
  • Dengan menyimpan data di variable, kita bisa menggunakannya lagi dengan menyebutkan nama variable nya
  • Untuk membuat variable di JavaScript, kita bisa menggunakan kata kunci var diikuti dengan nama variable nya
  • JavaScript adalah dynamic language, artinya variable di JavaScript tidak terpaku harus menggunakan satu tipe data, kita bisa mengubah-ubah tipe data di variable yang sama

39 of 311

Kode : Variable

40 of 311

Mengubah Value di Variable

  • Setelah variable di deklarasikan, kita bisa mengubah value atau nilai di dalam variable tersebut
  • Untuk mengubahnya, kita bisa menggunakan perintah nama variable diikuti dengan tanda = (sama dengan) lalu diikuti dengan value atau nilai nya

41 of 311

Kode : Mengubah Value di Variable

42 of 311

Membuat Variable Langsung Dengan Value

  • Di JavaScript juga kita bisa mendeklarasikan sebuah variable, langsung dengan isi value nya
  • Caranya kita bisa menggunakan kata kunci var, diikuti nama variable, lalu diikuti dengan tanda = (sama dengan), dan di ikuti dengan value atau nilai nya

43 of 311

Kode : Variable dan Value

44 of 311

Mengakses Variable

  • Salah satu keuntungan menggunakan variable adalah variable bisa digunakan kembali
  • Hal ini akan mempermudah ketika membutuhkan data yang sama berkali-kali
  • Untuk mengakses variable, kita cukup menyebutkan nama variable nya

45 of 311

Kode : Mengakses Variable

46 of 311

Kata Kunci let dan const

  • Sebelum tahun 2015, kata kunci untuk membuat variable hanya bisa menggunakan kata kunci var
  • Namun tahun 2015 sejak versi ECMAScript 2015, diperkenalkan kata kunci baru untuk membuat variable, let dan const
  • JavaScript sekarang tidak direkomendasikan lagi menggunakan kata kunci var untuk membuat variable, namun diganti dengan let, hal ini dikarenakan ada masalah dari desain awal var (akan kita bahas di chapter tersendiri)

47 of 311

Kode : Variable let

48 of 311

Kata Kunci const

  • Kata kunci let itu seperti kata kunci var, dimana data di variable tersebut bisa diubah-ubah sesuka kita
  • Sedangkan kata kunci const berbeda, ketika sebuah variable sudah diisi di variable const, maka variable tersebut tidak bisa diubah lagi value nya
  • Variable sejenis ini kadang dibilang juga constant

49 of 311

Kode : Variable const

50 of 311

Operator Matematika

51 of 311

Operator Matematika

  • JavaScript mendukung banyak sekali operator Matematika untuk tipe data Number, seperti :
  • Operator Aritmatika
  • Operator Augmented Assignments
  • Operator Unary
  • Dan lain-lain

52 of 311

Operator Aritmatika

Operator

Keterangan

+

Pertambahan

-

Pengurangan

*

Perkalian

**

Exponensial

/

Pembagian

%

Sisa Bagi

53 of 311

Kode : Operator Aritmatika

54 of 311

Operator Augmented Assignments

Operator Matematika

Operator Augmented Assigments

result = result + 10

result += 10

result = result - 10

result -= 10

result = result * 10

result *= 10

result = result ** 10

result **= 10

result = result / 10

result /= 10

result = result % 10

result %= 10

55 of 311

Kode : Operator Augmented Assigments

56 of 311

Operator Unary

Operator

Keterangan

+

Menandakan nilai positif

-

Menandakan nilai negatif

++

Increment, menaikkan 1 angka

--

Decrement, menurunkan 1 angka

57 of 311

Kode : Operator Unary

58 of 311

Operator Perbandingan

59 of 311

Operasi Perbandingan

  • Operasi perbandingan adalah operasi untuk membandingkan dua buah data
  • Operasi perbandingan adalah operasi yang menghasilkan nilai boolean (benar atau salah)
  • Jika hasil operasinya adalah benar, maka nilainya adalah true
  • Jika hasil operasinya adalah salah, maka nilainya adalah false

60 of 311

Operator Perbandingan

Operator

Keterangan

>

Lebih Dari

<

Kurang Dari

>=

Lebih Dari Sama Dengan

<=

Kurang Dari Sama Dengan

==

Sama Dengan

===

Sama Dengan dan Sama Tipe

!=

Tidak Sama Dengan

!==

Tidak Sama Dengan atau Tidak Sama Tipe

61 of 311

Kode : Operasi Perbandingan

62 of 311

Operator Logika

63 of 311

Operator Logika

  • Operator logika adalah operator untuk dua buah data boolean
  • Hasil dari operator logika adalah boolean lagi

64 of 311

Operator Logika

Operator

Keterangan

&&

Dan

||

Atau

!

Kebalikan

65 of 311

Operator &&

Nilai 1

Operator

Nilai 2

Hasil

true

&&

true

true

true

&&

false

false

false

&&

true

false

false

&&

false

false

66 of 311

Operator ||

Nilai 1

Operator

Nilai 2

Hasil

true

||

true

true

true

||

false

true

false

||

true

true

false

||

false

false

67 of 311

Operator Unary !

Operator

Nilai 2

Hasil

!

true

false

!

false

true

68 of 311

Kode : Operator Logika

69 of 311

Console

70 of 311

Console

  • JavaScript memiliki fitur untuk melakukan logging bernama Console
  • Logging adalah mekanisme yang biasa dilakukan oleh programmer untuk menampilkan informasi dari aplikasi yang sedang berjalan, tanpa harus mengganggu alur kerja aplikasi dan juga interaksi user
  • Untuk melakukan ini, kita bisa menggunakan fitur Console di JavaScript
  • Untuk menggunakan Console, kita cukup gunakan perintah console di kode JavaScript

71 of 311

Console Method

Console Method

Keterangan

console.info(...)

Memberitahu informasi

console.warn(...)

Memberitahu informasi peringatan

console.error(...)

Memberitahu informasi error

console.table(...)

Memberitahu informasi dalam bentuk table

72 of 311

Kode : Console

73 of 311

Inspect Element di Google Chrome

74 of 311

String Template

75 of 311

String Template

  • Kita sudah tahu bahwa untuk menambahkan string dengan data lain, kita bisa menggunakan operator + (plus)
  • Namun pada kasus tertentu, penggunaan operator + (plus) sangat menyulitkan, apalagi jika dalam jumlah banyak
  • JavaScript memiliki fitur yang bernama String Template, dimana kita bisa mensubtitusi data dari luar String ke dalam String, seperti mengambil data variable, atau bahkan melakukan operasi matematika
  • Untuk menggunakan String Template, cara pembuatan String nya harus menggunakan ` (backtick), bukan ‘ (petik satu) atau “ (petik dua)

76 of 311

Kode : String Template

77 of 311

Kode : Mengambil Variable

78 of 311

Kode : Expression di String Template

79 of 311

Multiline String

  • String template juga bisa digunakan untuk membuat string multi line
  • Kita cukup tambahkan enter di text nya

80 of 311

Kode : Multiline String

81 of 311

Konversi String dan Number

82 of 311

Konversi String dan Number

  • Saat membuat aplikasi, kadang kita input dari pengguna selalu dalam bentuk String
  • Sedangkan kita ingin mengelola datanya dalam bentuk Number
  • Maka sangat disarankan untuk melakukan konversi tipe data

83 of 311

Kode : Masalah Tanpa Konversi

84 of 311

Melakukan Konversi String dan Number

Function

Keterangan

parseInt(string)

Mengkonversi dari string ke number (bilangan bulat)

parseFloat(string)

Mengkonversi dari string ke number (bilangan pecahan)

Number(string)

Mengkonversi dari string ke number (bilangan bulat atau pecahan)

number.toString()

Mengkonversi dari number ke String

85 of 311

Kode : Konversi String ke Number

86 of 311

NaN

  • Bagaimana jika ternyata data string yang kita coba konversi ke number bukanlah data yang valid?
  • Jika data string yang kita coba lakukan konversi bukan lah data valid, maka hasil dari konversi tersebut adalah NaN (Not a Number)
  • NaN adalah number spesial yang menyebutkan bahwa ini bukanlah number
  • Jika NaN dioperasikan dengan data number lainnya, maka hasilnya akan menjadi NaN lagi

87 of 311

Kode : NaN

88 of 311

Kode : Operasi Pada NaN

89 of 311

isNaN() Function

  • Kadang kita ingin mengecek apakah sebuah number itu NaN atau bukan
  • Untuk melakukan pengecekan tersebut, kita bisa menggunakan function isNaN(number)
  • Hasil nya adalah berupa data boolean, true jika NaN, false jika bukan

90 of 311

Tipe Data Array

91 of 311

Tipe Data Array

  • Array adalah tipe data yang berisikan kumpulan data
  • Array di JavaScript memiliki sifat dinamis, artinya datanya bisa bertambah dengan sendirinya saat kita memasukkan data ke dalam Array

92 of 311

Diagram Array

93 of 311

Kode : Membuat Array

94 of 311

Cara Kerja Array

  • Setiap data di Array akan disimpan dalam posisi berurutan, dimana urutan pertama dimulai dari nomor 0
  • Setiap kita menambah data ke Array, otomatis data akan disimpan di urutan terakhir
  • Urutan di Array, kita sebut dengan index

95 of 311

Cara Kerja Array

96 of 311

Kode : Menambah Array

97 of 311

Operasi di Array

Operasi

Keterangan

array.push(value)

Menambah data ke Array

array.length

Untuk mendapatkan panjang Array

array[index]

Mendapat data di posisi index

array[index] = value

Mengubah data di posisi index

delete array[index]

Menghapus data di posisi index, namun index tidak bergeser

98 of 311

Kode : Operasi di Array

99 of 311

Perlu Diingat

  • Data di dalam Array tidak ada batasannya harus data apa
  • Jadi kita bisa memasukkan data apapun ke dalam Array
  • Bahkan kita juga bisa memasukkan Array ke dalam Array jika kita mau

100 of 311

Tipe Data Object

101 of 311

Associative Array

  • Di bahasa pemrograman lain seperti PHP, kita bisa menggunakan index beruba tipe data lain selain number, misal string
  • Fitur ini biasanya disebut associative array atau hash
  • Di JavaScript associative array tidak didukung.
  • Jika kita memaksa memasukkan data bukan number di index Array, maka JavaScript akan merubah tipe data Array tersebut menjadi object, dan ini bisa berbahaya, karena beberapa operasi di array mungkin bisa berubah hasilnya

102 of 311

Tipe Data Object

  • Tipe data object adalah tipe data yang mirip dengan tipe data Array
  • Yang membedakan adalah index pada tipe data object bisa menggunakan string
  • Index di object biasanya disebut attributes atau properties, bukan index

103 of 311

Kode : Membuat Object Kosong

104 of 311

Kode : Mengubah Property di Object

105 of 311

Kode : Membuat Object dengan Properties

106 of 311

Kode : Mengakses Property Object

107 of 311

If Expression

108 of 311

If Expression

  • Dalam JavaScript, if adalah salah satu kata kunci yang digunakan untuk percabangan
  • Percabangan artinya kita bisa mengeksekusi kode program tertentu ketika suatu kondisi terpenuhi
  • Hampir di semua bahasa pemrograman mendukung if expression

109 of 311

Kode : If Expression

110 of 311

Else Expression

  • Blok if akan dieksekusi ketika kondisi if bernilai true
  • Kadang kita ingin melakukan eksekusi program tertentu jika kondisi if bernilai false
  • Hal ini bisa dilakukan menggunakan else expression

111 of 311

Kode : Else Expression

112 of 311

Else If Expression

  • Kadang dalam If, kita butuh membuat beberapa kondisi
  • Kasus seperti ini, di JavaScript kita bisa menggunakan Else If expression

113 of 311

Kode : Else If Expression

114 of 311

Popup

115 of 311

Alert, Prompt dan Confirm

  • JavaScript memiliki fitur yang bernama alert, prompt dan confirm
  • Alert digunakan untuk memberi peringatan berupa popup text di browser
  • Prompt digunakan untuk meminta input string dari pengguna browser dalam bentuk popup input text
  • Sedangkan confirm digunakan untuk meminta input boolean dari pengguna browser dalam bentuk popup input pilihan

116 of 311

Kode : Alert

117 of 311

Hasil Alert

118 of 311

Kode : Prompt

119 of 311

Hasil Prompt

120 of 311

Kode : Confirm

121 of 311

Hasil Confirm

122 of 311

Undefined

123 of 311

undefined

  • undefined adalah sebuah kata kunci di JavaScript
  • undefined adalah sebuah tipe data
  • Sebuah variable yang belum ditambahkan nilai, maka artinya variable tersebut merupakan tipe undefined
  • Kadang untuk programmer JavaScript pemula undefined ini memang agak sedikit membingungkan
  • undefined itu berbeda dengan null di bahasa pemrograman lain

124 of 311

Kode : Undefined Variable

125 of 311

Kode : Undefined Array Value

126 of 311

Kode : Undefined Object Property

127 of 311

Null

128 of 311

Null

  • null merupakan representasi data kosong
  • null berbeda dengan undefined, null berarti variable sudah ditambahkan value nya, hanya saja value nya null
  • Sedangkan undefined adalah variable belum ditambahkan value apapun

129 of 311

Kode : Null dan Undefined

130 of 311

Switch Expression

131 of 311

Switch Statement

  • Kadang kita hanya butuh menggunakan kondisi sederhana di if statement, seperti hanya menggunakan perbandingan ==
  • Switch adalah statement percabangan yang sama dengan if, namun lebih sederhana cara pembuatannya
  • Kondisi di switch statement hanya untuk perbandingan ==

132 of 311

Kode : Switch Statement

133 of 311

Operator typeof

134 of 311

Operator typeof

  • typeof merupakan operator yang bisa kita gunakan untuk melihat tipe data sebuah value atau variable
  • Karena JavaScript merupakan dynamic langauge, jadi kadang kita perlu mengecek tipe data sebuah value atau variable menggunakan operator typeof
  • Hasil dari operator typeof adalah string tipe datanya

135 of 311

Type

Hasil Operator typeof

Undefined

“undefined”

Null

“object”

Boolean

“boolean”

Number

“number”

BitInt

“bigint”

String

“string”

Symbol

“symbol”

Function

“function”

Lainnya

“object”

136 of 311

Kode : Operator typeof

137 of 311

In Operator

138 of 311

In Operator

  • In operator adalah operator yang bisa dilakukan untuk mengecek apakah sebuah property ada di dalam object atau tidak
  • Jika property tersebut ada di object, maka hasilnya true, sedangkan jika tidak, maka hasilnya false
  • Tidak hanya di object, In juga bisa digunakan untuk mengecek index di Array

139 of 311

Kode : In Operator

140 of 311

Peringatan

  • In operator hanya akan mengecek apakah sebuah property atau index ada atau tidak
  • Jadi walaupun nilai property atau index nya undefined atau null, maka tetap akan dianggap ada

141 of 311

Kode : In Operator Undefined/Null Property

142 of 311

Ternary Operator

143 of 311

Ternary Operator

  • Ternary operator adalah operator sederhana dari if statement
  • Ternary operator terdiri dari kondisi yang dievaluasi, jika menghasilkan true maka nilai pertama diambil, jika false, maka nilai kedua diambil

144 of 311

Kode : Tanpa Ternary Operator

145 of 311

Kode : Dengan Ternary Operator

146 of 311

Nullish Coalescing Operator

147 of 311

Nullish Coalescing Operator

  • Nullist value adalah null dan undefined
  • Nullist coalescing operator (??) adalah operator mirip dengan ternary operator, yang membedakan adalah pada kondisi, jika bernilai null atau undefined, baru value default nya diambil

148 of 311

Kode : Tanpa Nullish Coalescing Operator

149 of 311

Kode : Nullish Coalescing Operator

150 of 311

Optional Chaining

151 of 311

Optional Chaining

  • Optional chaining operator (?) merupakan operator yang digunakan untuk mengamankan ketika kita ingin mengakses property sebuah object dari data nullish
  • Jika kita mencoba mengakses property dari sebuah object dari data nullish tanpa menggunakan optional chaining operator, maka akan terjadi error

152 of 311

Kode : Error Mengakses Property Nullish

153 of 311

Error Mengakses Property Nullish

154 of 311

Kode : Pengecekan Menggunakan If

155 of 311

Kode : Menggunakan Optional Chaining

156 of 311

Falsy dan Truthy

157 of 311

Falsy

  • Falsy atau kadang ditulis falsey, adalah value yang ketika dalam konteks boolean, dia dianggap false
  • Ini adalah salah satu fitur unik dari JavaScript, yang berguna, namun kadang juga sering membingungkan
  • Jadi di JavaScript, kondisi itu tidak hanya bisa boolean, tapi diluar boolean pun bisa, namun kita harus tahu beberapa data falsy, atau dianggap false

158 of 311

Data Falsy

Data dianggap Falsy

Keterangan

false

Boolean false

0, -0

Number 0 dan -0 dianggap false

“”, ‘’, ``

Semua string kosong dianggap false

null

null dianggap false

undefined

undefined dianggap false

NaN

Not a Number dianggap false

159 of 311

Truthy

  • Truthy adalah kebalikan dari falsy, dimana data nya dianggap bernilai true
  • Sederhana sekali sebenarnya untuk mengetahui sebuah data itu adalah truthy, yaitu data yang bukan bernilai falsy

160 of 311

Kode : Falsy dan Truthy

161 of 311

Operator Logika di Non Boolean

162 of 311

Operator Logika di Non Boolean

  • Sebelumnya kita sudah tahu bahwa operator logika AND (&&) dan OR (||) digunakan untuk dua data boolean
  • Namun berbeda di JavaScript, kita bisa menggunakan operator logika AND dan OR untuk tipe data non boolean

163 of 311

Operator OR (||) di Non Boolean

  • Operator logika OR (||), membaca dari kiri ke kanan.
  • Operator ini akan mengambil nilai pertama yang truthy.
  • Jika tidak ada satupun yang bernilai truthy, maka yang terakhir yang akan diambil

164 of 311

Kode : Operator OR (||)

165 of 311

Operator AND (&&) di Non Boolean

  • Operator logika AND (||), membaca dari kiri ke kanan.
  • Operator ini akan mengambil nilai pertama yang falsy.
  • Jika tidak ada satupun yang bernilai falsy, maka yang terakhir yang akan diambil

166 of 311

Kode : Operator AND (&&)

167 of 311

For Loop

168 of 311

For Loop

  • For adalah salah satu kata kunci yang bisa digunakan untuk melakukan perulangan
  • Blok kode yang terdapat di dalam for akan selalu diulangi selama kondisi for terpenuhi

169 of 311

Sintak Perulangan For

for(init statement; kondisi; post statement){� // block perulangan�}

  • Init statement akan dieksekusi hanya sekali di awal sebelum perulangan
  • Kondisi akan dilakukan pengecekan dalam setiap perulangan, jika true perulangan akan dilakukan, jika false perulangan akan berhenti
  • Post statement akan dieksekusi setiap kali diakhir perulangan
  • Init statement, Kondisi dan Post Statement tidak wajib diisi, jika Kondisi tidak diisi, berarti kondisi selalu bernilai true

170 of 311

Kode : Perulangan Tanpa Henti

171 of 311

Kode : Perulangan Dengan Kondisi

172 of 311

Kode : Perulangan Dengan Init Statement

173 of 311

Kode : Perulangan Dengan Post Statement

174 of 311

While Loop

175 of 311

While Loop

  • While loop adalah versi perulangan yang lebih sederhana dibanding for loop
  • Di while loop, hanya terdapat kondisi perulangan, tanpa ada init statement dan post statement

176 of 311

Kode : While Loop

177 of 311

Do While Loop

178 of 311

Do While Loop

  • Do While loop adalah perulangan yang mirip dengan while
  • Perbedaannya hanya pada pengecekan kondisi
  • Pengecekan kondisi di while loop dilakukan di awal sebelum perulangan dilakukan, sedangkan di do while loop dilakukan setelah perulangan dilakukan
  • Oleh karena itu dalam do while loop, minimal pasti sekali perulangan dilakukan walaupun kondisi tidak bernilai true

179 of 311

Kode : Do While Loop

180 of 311

Break dan Continue

181 of 311

Break & Continue

  • Pada switch statement, kita sudah mengenal kata kunci break, yaitu untuk menghentikan case dalam switch
  • Sama dengan pada perulangan, break juga digunakan untuk menghentikan seluruh perulangan.
  • Namun berbeda dengan continue, continue digunakan untuk menghentikan perulangan saat ini, lalu melanjutkan ke perulangan selanjutnya

182 of 311

Kode : Break

183 of 311

Kode : Continue

184 of 311

Label

185 of 311

Label

  • Label merupakan penanda yang bisa digunakan dengan kata kunci break dan continue
  • Secara default saat kita melakukan break atau continue, dia akan melakukan terhadap perulangan dimana kode break dan continue itu digunakan
  • Dengan menggunakan label, kita bisa melakukan break dan continue terhadap perulangan yang kita inginkan, asalkan pada perulangannya kita gunakan label
  • Untuk membuat label, kita bisa gunakan nama label lalu diikuti dengan : (titik dua)

186 of 311

Kode : Label

187 of 311

Kode : Continue atau Break di Label

188 of 311

For In

189 of 311

For In

  • For In merupakan perulangan for yang digunakan untuk mengiterasi seluruh data property di object atau index di array
  • Walaupun for in bisa digunakan untuk Array, namun tidak direkomendasikan untuk Array, karena biasanya kita jarang sekali butuh data index untuk Array, kita bisa menggunakan For Of (yang dibahas setelah ini)

190 of 311

Kode : For In di Object

191 of 311

Kode : For In di Array

192 of 311

For Of

193 of 311

For Of

  • Jika For In digunakan untuk melakukan iterasi property atau index, berbeda dengan For Of, ini digunakan untuk melakukan iterasi terhadap isi value dari iterable object, seperti Array, String dan lain-lain
  • For of tidak bisa digunakan untuk melakukan iterasi data di object, karena object bukanlah iterable.

194 of 311

Kode : For Of di Array

195 of 311

Kode : For Of di String

196 of 311

With Statement

197 of 311

With Statement

  • With statement merupakan fitur yang digunakan untuk menurunkan sebuah scope data
  • Dengan menggunakan with statement, kita bisa mengakses property dalam sebuah data tanpa harus menyebut datanya

198 of 311

Kode : Tanpa With Statement

199 of 311

Kode : Dengan With Statement

200 of 311

With Statement Tidak Direkomendasikan

  • Walaupun fitur with statement ini sangat menarik
  • Namun kebanyakan orang tidak merekomendasikan penggunaan with statement
  • Hal ini dikarenakan with statement kadang membuat sebuah kode menjadi ambigu

201 of 311

Kode : Ambigu di With Statement

202 of 311

Function

203 of 311

Function

  • Function adalah blok kode program yang akan berjalan saat kita panggil
  • Sebelumnya kita sudah menggunakan function writeln() untuk menampilkan tulisan di html
  • Untuk membuat function, kita bisa menggunakan kata kunci function, lalu diikuti dengan nama function, kurung () dan diakhiri dengan block kurung {}
  • Kita bisa memanggil function dengan menggunakan nama function lalu diikuti dengan kurung ()
  • Di bahasa pemrograman lain, function juga disebut dengan method

204 of 311

Kode : Function

205 of 311

Function Parameter

206 of 311

Function Parameter

  • Kita bisa mengirim informasi ke function yang ingin kita panggil
  • Untuk melakukan hal tersebut, kita perlu menambahkan parameter atau argument di function yang sudah kita buat
  • Parameter ditempatkan di dalam kurung () di deklarasi method
  • Parameter bisa lebih dari satu, jika lebih dari satu, harus dipisah menggunakan tanda koma

207 of 311

Kode : Function Parameter

208 of 311

Function Return Value

209 of 311

Function Return Value

  • Secara default, function itu tidak menghasilkan value apapun, namun jika kita ingin, kita bisa membuat sebuah function mengembalikan value
  • Agar function bisa menghasilkan value, kita bisa menggunakan kata kunci return di dalam function nya.
  • Dan di dalam block function, untuk menghasilkan nilai tersebut, kita harus menggunakan kata kunci return, lalu diikuti dengan data yang ingin kita hasilkan.
  • Function hanya bisa mengembalikan satu data, jika kita ingin mengembalikan beberapa data sekaligus, kita bisa menggunakan Array sebagai return value nya

210 of 311

Kode : Function Return Value

211 of 311

Kode : Function Return Value Lebih Dari Satu

212 of 311

Menghentikan Eksekusi dengan Return

  • Saat kita menggunakan kata kunci return, maka kode setelah return tersebut tidak akan dieksekusi
  • Kita bisa menggunakan return untuk menghentikan eksekusi sebuah function

213 of 311

Kode : Menghentikan Eksekusi dengan Return

214 of 311

Optional Parameter

215 of 311

Optional Parameter

  • Secara default, parameter di function itu optional
  • Artinya kita tidak wajib mengisi value nya ketika memanggil function
  • Jika tidak ada value yang kita kirim ke parameter ketika memanggil function, maka secara otomatis parameter tersebut bernilai undefined

216 of 311

Kode : Optional Parameter

217 of 311

Default Parameter

218 of 311

Default Parameter

  • Sekarang kita tahu bahwa parameter itu optional, artinya kita bisa tidak memberi value terhadap parameter
  • Parameter juga bisa kita beri default value, artinya jika ketika kita tidak mengirim data ke parameter atau kita mengirim data undefined, maka secara otomatis parameter akan diisi oleh default value

219 of 311

Kode : Default Parameter

220 of 311

Rest Parameter

221 of 311

Rest Parameter

  • Rest Parameter adalah fitur dimana kita bisa mengirim data sebanyak-banyak nya pada satu parameter, dan secara otomatis akan di konversi menjadi Array
  • Untuk membuat rest parameter, ada ketentuannya
  • Rest parameter hanya boleh ada satu di function, tidak boleh lebih dari satu
  • Rest parameter hanya boleh berada di posisi paling akhir, tidak boleh di depan atau di tengah, kecuali memang cuma ada 1 parameter
  • Di bahasa pemrograman lain, ada juga yang bilang ini adalah variable argument

222 of 311

Kode : Rest Parameter

223 of 311

Spread Syntax

  • Kadang kita terlanjur memiliki data berupa Array
  • Tapi untungnya kita juga bisa mengirim Array ke Rest Parameter
  • Kita bisa gunakan … (titik tiga kali) diikuti dengan array nya ketika memanggil function
  • Fitur ini dinamakan Spread Syntax

224 of 311

Kode : Spread Syntax di Rest Parameter

225 of 311

Arguments Object

  • Sebelum ada fitur rest parameter, di JavaScript sudah ada fitur yang bernama arguments object
  • Ini adalah fitur dimana kita bisa mengambil semua parameter dalam bentuk array dengan menggunakan object bernama arguments
  • arguments secara otomatis bisa digunakan di function
  • Namun perlu diingat, bahwa untuk JavaScript saat ini, lebih baik disarankan menggunakan rest parameter dibanding arguments object

226 of 311

Kode : Arguments Object

227 of 311

Function Sebagai Value

228 of 311

Function Sebagai Value

  • Function tidak hanya bisa digunakan sebagai kode program yang dieksekusi, tapi bisa juga sebagai value
  • Artinya, function bisa disimpan di variable, bisa juga dikirim melalui parameter ke function lainnya

229 of 311

Kode : Function di Variable

230 of 311

Kode : Function di Parameter

231 of 311

Anonymous Function

232 of 311

Anonymous Function

  • Sebelumnya kita selalu membuat function dengan nama
  • Kita juga bisa membuat function tanpa nama function, atau istilahnya adalah anonymous function
  • Kita bisa buat anonymous function dalam sebuah variable atau bisa juga kita buat ketika mengisi parameter

233 of 311

Kode : Anonymous Function di Variable

234 of 311

Kode : Anonymous Function di Parameter

235 of 311

Function dalam Function

236 of 311

Function dalam Function

  • Tidak ada batasan dimana kita bisa membuat function
  • Termasuk jika kita ingin membuat function di dalam sebuah function, kita bisa melakukannya
  • Function yang terdapat di dalam, kita sebut inner function
  • Inner function hanya bisa diakses di tempat kita membuat function nya, tidak bisa diakses dari luar function nya

237 of 311

Kode : Function dalam Function

238 of 311

Scope

239 of 311

Scope

  • Scope merupakan area akses sebuah data
  • Ada dua jenis scope, global scope dan local scope.
  • Setiap kita membuat function, maka kita akan membuat local scope untuk function tersebut
  • Data di global scope bisa diakses dari local scope, namun data di local scope hanya bisa di akses di local scope tersebut atau di scope local dibawahnya (dalam kasus function dalam function)

240 of 311

Kode : Global Scope

241 of 311

Kode : Local Scope

242 of 311

Kode : Nested Function Scope

243 of 311

Recursive Function

244 of 311

Recursive Function

  • Recursive function adalah kemampuan function memanggil function dirinya sendiri
  • Kadang memang ada banyak problem, yang lebih mudah diselesaikan menggunakan recursive function, seperti contohnya kasus factorial

245 of 311

Kode : Factorial Loop

246 of 311

Kode : Factorial Recursive

247 of 311

Function Generator

248 of 311

Function Generator

  • Function generator adalah function yang digunakan untuk membuat data generator
  • Generator adalah data yang bisa di interasi seperti Array
  • Untuk membuat function generator, kita perlu menggunakan tanda * (bintang) setelah kata function
  • Dan untuk mengembalikan data di tiap iterasi, kita bisa gunakan kata kunci yield diikuti datanya

249 of 311

Kode : Function Generator Sederhana

250 of 311

Kode : Function Generator Kompleks

251 of 311

Lazy Evaluation

  • Generator itu sifatnya lazy
  • Jadi artinya jika kita tidak data belum kita ambil dari generator, maka yield selanjutnya tidak akan di eksekusi

252 of 311

Kode : Lazy Generator

253 of 311

Arrow Function

254 of 311

Arrow Function

  • Arrow function adalah alternatif pembuatan function yang lebih sederhana dari function biasanya
  • Namun terdapat limitasi dan juga tidak bisa digunakan di semua situasi
  • Dinamakan arrow function karena menggunakan tanda => (seperti panah)
  • Berikut contoh beberapa kekurangan arrow function :
    • tidak memiliki fitur arguments object
    • tidak bisa menggunakan function generator
    • tidak bisa mengakses this (yang nanti akan dibahas di function di object)
    • tidak bisa mengakses super (yang nanti akan dibahas di JavaScript Object Oriented Programming)

255 of 311

Kode : Membuat Arrow Function

256 of 311

Arrow Function Tanpa Block

  • Jika sebuah arrow function isinya sederhana, misal hanya satu baris
  • Kita bisa membuat arrow function tanpa harus menggunakan block

257 of 311

Kode : Arrow Function Tanpa Block

258 of 311

Arrow Function Return Value

  • Arrow function bisa mengembalikan value, sama seperti function biasanya
  • Jika menggunakan block, maka kita perlu menggunakan kata kunci return
  • Jika tidak menggunakan block, kita tidak perlu menggunakan kata kunci return

259 of 311

Kode : Arrow Function Return Value

260 of 311

Arrow Function Tanpa Kurung Parameter

  • Jika parameter di arrow function hanya satu, kita bisa tidak menggunakan kurung pada parameter

261 of 311

Kode : Arrow Function Tanpa Kurung Parameter

262 of 311

Kode : Arrow Function Sebagai Parameter

  • Karena arrow function sama seperti anonymous function
  • Jadi kita juga bisa menggunakan arrow function sebagai parameter di function lain

263 of 311

Kode : Arrow Function Sebagai Parameter

264 of 311

Closure

265 of 311

Closure

  • Closure adalah kombinasi function dan bundel referensi ke data disekitarnya.
  • Oke agak membingungkan memang, apalagi untuk yang baru pertama belajar
  • Kita sudah tahu bahwa local scope tidak bisa diakses di luar scope nya
  • Dengan kemampuan closure, kita bisa membuat sebuah function di local scope dan referensi ke data di sekitar local scope tersebut, keluar scope nya

266 of 311

Kode : Closure

267 of 311

Object Method

268 of 311

Object Method

  • Pada tipe data object, kita sudah membahas tentang property di object
  • Karena sebenarnya function juga merupakan salah satu tipe data, jadi function pun sebenarnya bisa ditambahkan sebagai property di object
  • Cara pembuatannya pun sama dengan function sebagai value
  • Function di object kadang disebut juga sebagai Object Method

269 of 311

Kode : Membuat Object dengan Method

270 of 311

Kode : Menambah Method ke Object

271 of 311

Kata Kunci this

272 of 311

Kata Kunci this

  • Kata kunci this adalah referensi ke object milik siapa
  • Tiap lokasi kata kunci this, bisa berbeda-beda referensi pemilik nya
  • Dalam Object Method, this merupakan referensi ke object pemilik function nya
  • Di global scope, this merupakan referensi ke global object (di browser biasanya Window)
  • Dalam function, this merupakan referensi ke global object (di browser biasanya Window)
  • Di function dengan strict mode (akan dibahas nanti), this adalah undefined
  • Dalam event, this merupakan referensi ke element yang menerima event (dibahas di materi Document Object Model)

273 of 311

Kode : this di Global Scope

274 of 311

Kode : this di Function

275 of 311

Kode : this di Object Method

276 of 311

Arrow Function di Object

277 of 311

Arrow Function di Object

  • Sebelumnya kita sudah bahas tentang Arrow Function
  • Arrow Function juga bisa kita gunakan di sebagai Object Method
  • Namun perlu diketahui, Arrow Function tidak bisa digunakan untuk mengakses arguments object, function generator, kata kunci this dan kata kunci super (dibahas di materi JavaScript Object Oriented Programming)
  • Jadi pastikan gunakan Arrow Function hanya memang ketika kita tidak butuh fitur-fitur diatas

278 of 311

Kode : Arrow Function di Object Method

279 of 311

Kode : this di Arrow Function Object

280 of 311

Getter dan Setter

281 of 311

Getter dan Setter

  • Getter dan Setter adalah kemampuan membuat function yang berbeda untuk mengambil data (Getter) dan mengubah data (Setter) pada sebuah property di Object
  • Dengan menggunakan Getter dan Setter, kita bisa melakukan hal apapun dalam function sebelum sebuah property di akses atau diubah, misal menambah validasi dan lain-lain

282 of 311

Kode : Getter

283 of 311

Kode : Setter

284 of 311

Masalah Variable var

285 of 311

Masalah Variable var

  • Sebelumnya sudah dijelaskan bahwa penggunaan var sudah tidak direkomendasikan lagi, dan diganti dengan let
  • Pertanyaannya kenapa?
  • Alasan var tidak direkomendasikan digunakan lagi adalah, karena var tidak memiliki block scope, artinya dia tidak mengikat ke local scope yang sebelumnya sudah kita bahas
  • Karena masalah ini, var bisa tidak terprediksi
  • Kita akan buat contoh penggunaan var dan let

286 of 311

Kode : Menggunakan let

287 of 311

Kode : Menggunakan var

288 of 311

Destructuring

289 of 311

Destructuring

  • Destructuring adalah fitur yang bisa digunakan untuk membongkar value-value di array atau object ke dalam variable-variable
  • Fitur ini sangat mempermudah kita ketika ingin mengambil data dari array atau object tanpa harus melakukan pengambilan data satu persatu

290 of 311

Kode : Mengambil Data di Array

291 of 311

Kode : Destructuring Array

292 of 311

Kode : Mengambil Data di Object

293 of 311

Kode : Destructuring Object

294 of 311

Kode : Destructuring Nested Object

295 of 311

Destructuring Function Parameter

  • Destructuring tidak hanya bisa dilakukan di variable, tapi juga bisa dilakukan di function parameter
  • Hal ini membuat kita mudah ketika ingin mengambil nested data dalam array atau object dalam function

296 of 311

Kode : Destructuring di Function Parameter (1)

297 of 311

Kode : Destructuring di Function Parameter (2)

298 of 311

Default Value

  • Yang paling menarik di destructuring adalah, kita bisa menambahkan default value
  • Jadi misal kita kita melakukan destructuring terhadap array, ternyata tidak ada datanya, maka kita bisa menambahkan default value
  • Begitu juga pada object, jika ternyata property nya tidak ada, maka kita bisa menambahkan default value

299 of 311

Kode : Default Value Destructuring Array

300 of 311

Kode : Default Value Destructuring Object

301 of 311

Menggunakan Nama Variable Lain

  • Saat melakukan destructuring di Array, kita bisa dengan mudah membuat nama variable sesuka kita
  • Namun pada saat melakukan destructuring, kita harus membuat nama variable sama dengan nama property
  • Kita juga bisa menggunakan nama variable lain saat melakukan destructuring object jika kita mau

302 of 311

Kode : Menggunakan Nama Variable Lain

303 of 311

Strict Mode

304 of 311

Strict Mode

  • Saat kita menjalankan kode program JavaScript, secara default kode program kita berjalan dalam mode tidak strict, atau istilahnya sloppy mode
  • Pada ECMAScript 5, diperkenalkan mode strict, dimana ketika strict mode dijalankan, maka akan merubah beberapa cara kerja di JavaScript, seperti :
    • Merubah beberapa JavaScript error dari yang tadinya silent error, menjadi throw error (terlihat)
    • Memperbaiki beberapa kesalahan engine JavaScript untuk optimisasi
    • Menolak beberapa kode perintah yang kedepannya akan digunakan di ECMAScript
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode

305 of 311

Cara Menyalakan Strict Mode

  • Untuk menyalakan strict mode, kita bisa menambahkan `use strict` pada baris awal file javascript kita
  • Atau bisa juga ditambahkan di awal function kita

306 of 311

Kode : Strict Mode

307 of 311

Debugger

308 of 311

Debugger

  • Debugger digunakan untuk melakukan proses debugging
  • Debugging adalah proses mencari bug (masalah) yang biasa terjadi di kode program kita
  • Dengan debugger kita bisa menghentikan kode program di posisi yang kita inginkan (breakpoint), lalu melihat semua isi variable yang ada pada saat kode program sedang berhenti

309 of 311

Kode : Debugger

310 of 311

Materi Selanjutnya

311 of 311

Materi Selanjutnya

  • JavaScript Object Oriented Programming
  • JavaScript Modules
  • JavaScript Document Object Model
  • JavaScript Async
  • JavaScript Web API