Skip to content

Commit e8e1d35

Browse files
committed
2 parents f84d49d + 5231cca commit e8e1d35

File tree

72 files changed

+424
-532
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+424
-532
lines changed

1-js/01-getting-started/1-intro/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,7 @@ Engine sangat rumit. Tapi basicnya mudah.
3838
2. Lalu ia mengkonversi ("mengkompilasi") script tersebut menjadi bahasa mesin.
3939
3. Dan kemudian kode mesin berjalan, lumayan cepat.
4040
41-
<<<<<<< HEAD
42-
Engine melakukan optimisasi di setiap langkah proses. Dia bahkan memperhatikan script yang telah dikompilasi saat sedang berjalan, menganalisa data yang mengalir di dalam, dan melakukan optimisasi ke kode mesin berdasarkan pengetahuan itu. Ketika selesai, script berjalan lumayan cepat.
43-
=======
44-
The engine applies optimizations at each step of the process. It even watches the compiled script as it runs, analyzes the data that flows through it, and further optimizes the machine code based on that knowledge.
45-
>>>>>>> 2b5ac971c1bd8abe7b17cdcf724afd84799b6cbd
41+
Engine melakukan optimisasi di setiap langkah proses. Dia bahkan memperhatikan script yang telah dikompilasi saat sedang berjalan, menganalisa data yang mengalir di dalam, dan melakukan optimisasi ke kode mesin berdasarkan pengetahuan itu.
4642
```
4743

4844
## Apa yang bisa dilakukan *in-browser JavaScript*?

1-js/01-getting-started/4-devtools/article.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ Tampilan persisnya tools pengembang tergantung versi Chrome kamu. Ia berubah dar
2929
- Di sini kita bisa melihat pesan error berwarna merah. Di sini, scriptnya mengandung perintah asing "lalala".
3030
- Di kanan, ada link yang bisa diklik ke sumber `bug.html:12` dengan nomor baris di mana error itu muncul.
3131

32-
Di bawah pesan error, ada simbol `>` berwarna biru. Ia menandakan "command line" di mana kita bisa mengetik perintah JavaScript. Tekan `key:Enter` untuk menjalankannya (`key:Shift+Enter` untuk menginput perintah multi-baris).
32+
Di bawah pesan error, ada simbol `>` berwarna biru. Ia menandakan "command line" di mana kita bisa mengetik perintah JavaScript. Tekan `key:Enter` untuk menjalankannya.
3333

3434
Sekarang kita bisa melihat error, dan itu sudah cukup untuk permulaan. Kita nanti akan kembali ke tools pengembang dan mengcover debugging lebih dalam di bab <info:debugging-chrome>.
3535

36+
```smart header="Multi-line input"
37+
Usually, when we put a line of code into the console, and then press `key:Enter`, it executes.
38+
39+
To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code.
40+
```
3641

3742
## Firefox, Edge, dan lainnya
3843

@@ -50,12 +55,6 @@ Buka Preferences dan pergi ke "Advanced" pane. Di sana ada checkbox di sebelah b
5055

5156
Sekarang `key:Cmd+Opt+C` bisa mentoggle konsol. Lalu, menu "Develop" muncul pada menu item di atas. Ia punya banyak perintah dan opsi.
5257

53-
```smart header="Input baris-ganda"
54-
Biasanya, ketika kita menaruh sebaris kode ke konsol, dan menekan `key:Enter`, dia akan berjalan.
55-
56-
Untuk menyisipkan lebih dari satu baris, tekan `key:Shift+Enter`. Dengan cara ini kamu bisa mengenter fragment yang panjang dari kode JavaScript.
57-
```
58-
5958
## Kesimpulan
6059

6160
- Tools pengembang memungkinkan kita melihat error, menjalankan perintah, memeriksa variabel, dan sebagainya.

1-js/02-first-steps/05-types/article.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,33 @@ Nilai numerik spesial formalnya merupakan bagian dari tipe "number". Tentu saja
6262

6363
Kita akan melihat lebih tentang cara bekerja dengan angka di bab <info:number>.
6464

65+
## BigInt
66+
67+
Di JavaScript, tipe "number" tidak bisa mewakili nilai integer yang lebih dari <code>2<sup>53</sup></code> (atau kurang dari <code>-2<sup>53</sup></code> untuk negatives), itu batasan teknikal yang disebabkan representasi internal mereka. Itu sekitar 16 digit desimal, jadi untuk banyak tujuan limitasi itu bukan masalah, tapi kadang kita butuh butuh big number yang sangat besar, misanya: cryptography or microsecond-precision timestamps.
68+
69+
`BigInt` type was recently added to the language to represent integers of arbitrary length.
70+
71+
A `BigInt` is created by appending `n` to the end of an integer literal:
72+
73+
```js
74+
// the "n" at the end means it's a BigInt
75+
const bigInt = 1234567890123456789012345678901234567890n;
76+
```
77+
78+
As `BigInt` numbers are rarely needed, we devoted them a separate chapter <info:bigint>.
79+
80+
```smart header="Compatability issues"
81+
Right now `BigInt` is supported in Firefox and Chrome, but not in Safari/IE/Edge.
82+
```
83+
6584
## String
6685

6786
String di JavaScript harus dikelilingi petik.
6887

6988
```js
7089
let str = "Hello";
7190
let str2 = 'Single quotes are ok too';
72-
let phrase = `can embed ${str}`;
91+
let phrase = `can embed another ${str}`;
7392
```
7493

7594
Di JavaScript, ada 3 tipe petik.
@@ -198,6 +217,8 @@ typeof undefined // "undefined"
198217

199218
typeof 0 // "number"
200219

220+
typeof 10n // "bigint"
221+
201222
typeof true // "boolean"
202223

203224
typeof "foo" // "string"
@@ -223,12 +244,12 @@ Tiga baris terakhir mungkin butuh penjelasan tambahan:
223244
2. Hasil `typeof null` yaitu `"object"`. Itu salah. Ia merupakan error yang terkenal resmi dalam `typeof`, yang dijaga untuk kompatibilitas. Tentu saja, `null` bukanlah objek. Ia merupakan nilai spesial dengan tipe terpisah miliknya sendiri. Jadi, lagi, ini merupakan error dalam bahasa.
224245
3. Hasil dari `typeof alert` yaitu `"function"`, karena `alert` merupakan fungsi. Kita akan belajar fungsi di bab berikutnya di mana kita juga akan melihat bahwa tak ada tipe "fungsi" spesial di JavaScript. Fungsi merupakan bagian dari tipe objek. Tapi `typeof` memperlakukan mereka secara berbeda, yang mengembalikan `"fungsi"`. Itu tak sepenuhnya benar, tapi sangat nyaman pada praktiknya.
225246

226-
227247
## Kesimpulan
228248

229249
Ada 7 tipe data dasar dalam JavaScript.
230250

231251
- `number` untuk angka jenis manapun: integer atau floating-point.
252+
- `bigint` untuk angka integer dengan panjang sembarang.
232253
- `string` untuk string. String mungkin punya satu atau lebih karakter, tak ada tipe katakter tunggal terpisah.
233254
- `boolean` untuk `true`/`false`.
234255
- `null` untuk nilai tak-diketahui -- tipe mandiri yang punya nilai tunggal `null`.

1-js/02-first-steps/06-type-conversions/article.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Ada juga kasus di mana kita harus explisit mengkonversi nilai ke tipe yang dihar
1010
Di bab ini, kita takkan mengcover objek. Daripada itu, kita akan belajar primitives dulu. Lalu, setelah kita belajar tentang objek, kita akan lihat cara konversi objek bekerja di bab <info:object-toprimitive>.
1111
```
1212

13-
## String Conversion
13+
## Konversi String
1414

1515
Konversi string terjadi ketika kita butuh bentuk string dari nilai.
1616

@@ -30,7 +30,7 @@ alert(typeof value); // string
3030

3131
Konversi string kebanyakan jelas. `false` menjadi `"false"`, `null` menjadi `"null"`, dll.
3232

33-
## Numeric Conversion
33+
## Konversi Numerik
3434

3535
Konversi numerik terjadi otomatis dalam fungsi dan expresi matematis.
3636

@@ -81,20 +81,9 @@ alert( Number(false) ); // 0
8181

8282
Tolong diingat bahwa kelakuan `null` dan `undefined` berbeda di sini: `null` menjadi nol namun `undefined` menjadi `NaN`.
8383

84-
````smart header="Penambahan '+' mengkonkatenasi string"
85-
Hampir semua operasi matematik mengkonversi nilai ke angka. Pengecualian yang penting ialah penambahan `+`. Jika satu dari nilai yang ditambahkan berupa string, nilai lainnya juga dikonversi ke string.
84+
Hampir semua operasi matematik melakukan konversi semacam ini, yang akan kita lihat di bab berikutnya.
8685

87-
Maka, ia mengkonkatenasi (menggabungkan) mereka:
88-
89-
```js run
90-
alert( 1 + '2' ); // '12' (string ke kanan)
91-
alert( '1' + 2 ); // '12' (string ke kiri)
92-
```
93-
94-
Ini cuma terjadi ketika setidaknya satu dari argumen yaitu string. Sebaliknya, nilai dikonversi ke angka.
95-
````
96-
97-
## Boolean Conversion
86+
## Konversi Boolean
9887

9988
Konversi boolean ialah yang paling simpel.
10089

1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ null === +"\n0\n" → false
1313
Beberapa alasan:
1414

1515
1. Sudah jelas, true.
16-
2. Pembandingan kamus, jadi false.
16+
2. Pembandingan kamus, jadi false. `"a"` lebih kecil dari `"p"`.
1717
3. Lagi, pembandingan kamus, karakter pertama `"2"` lebih besar dari karakter pertama `"1"`.
1818
4. Nilai `null` dan `undefined` selalu bernilai sama.
1919
5. Equalitas ketat memang ketat. Tipe berbeda dari kedua sisi menghasilkan false.

1-js/02-first-steps/15-function-expressions/article.md

Lines changed: 2 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
<<<<<<< HEAD:1-js/02-first-steps/15-function-expressions-arrows/article.md
2-
# Expresi fungsi dan panah
3-
=======
4-
# Function expressions
5-
>>>>>>> 2b5ac971c1bd8abe7b17cdcf724afd84799b6cbd:1-js/02-first-steps/15-function-expressions/article.md
1+
# Expresi fungsi
62

73
Di JavaScript, fungsi bukan "struktur bahasa magis", melaikan satu bentuk nilai spesial.
84

@@ -354,121 +350,12 @@ welcome(); // sekarang ok
354350
```smart header="Kapan harus memilih Deklarasi Fungsi versus Expresi Fungsi?"
355351
Sebagai aturan praktis, saat kita harus mendeklarasi fungsi, hal pertama yang kita pertimbangkan ialah syntax Deklarasi Fungsi. Ia memberi kebebasan lebih dalam bagaimana mengorganisir kode kita, karena kita bisa memanggil fungsi macam ini sebelum mereka dideklarasi.
356352
357-
<<<<<<< HEAD
358353
Itu juga untuk keterbacaan yang lebih baik, karena lebih mudah melihat `function f(…) {…}` dalam kode ketimbang `let f = function(…) {…}`. Deklarasi Fungsi lebih "eye-catching".
359-
=======
360-
That's also better for readability, as it's easier to look up `function f(…) {…}` in the code than `let f = function(…) {…};`. Function Declarations are more "eye-catching".
361-
>>>>>>> ec21af8aef6930388c06ee4cd8f8f6769f9d305b
362354
363355
...Tapi jika Deklarasi Fungsi tak cocok untuk beberapa alasan, atau kita butuh deklarasi kondisional (kita sudah lihat contohnya), maka Expresi Fungsi sebaiknya digunakan.
364356
```
365357

366-
<<<<<<< HEAD:1-js/02-first-steps/15-function-expressions-arrows/article.md
367-
368-
## Fungsi panah [#arrow-functions]
369-
370-
Ada lagi syntax yang lebih simpel dan ringkas untuk membuat fungsi, ia lebih baik dari Expresi Fungsi. Ia disebut "fungsi panah", karena rupanya seperti ini:
371-
372-
373-
```js
374-
let func = (arg1, arg2, ...argN) => expression
375-
```
376-
377-
...Ini membuat fungsi `func` yang punya argumen `arg1..argN`, mengevaluasi `expression` di sisi kanan dengan penggunaan mereka dan mengembalikan hasilnya.
378-
379-
Dengan kata lain, kasarnya ia sama saja dengan:
380-
381-
```js
382-
let func = function(arg1, arg2, ...argN) {
383-
return expression;
384-
};
385-
```
386-
387-
...Tapi lebih ringkas.
388-
389-
Ayo kita lihat contoh:
390-
391-
```js run
392-
let sum = (a, b) => a + b;
393-
394-
/* Fungsi panah ialah bentuk pendek dari:
395-
396-
let sum = function(a, b) {
397-
return a + b;
398-
};
399-
*/
400-
401-
alert( sum(1, 2) ); // 3
402-
403-
```
404-
405-
Jika kita cuma punya satu argumen, maka tanda kurung sekitar parameter bisa dibuang, membuatnya lebih pendek lagi:
406-
407-
```js run
408-
// sama dengan
409-
// let double = function(n) { return n * 2 }
410-
*!*
411-
let double = n => n * 2;
412-
*/!*
413-
414-
alert( double(3) ); // 6
415-
```
416-
417-
Jika tak ada argumen, tanda kurung sebaiknya kosong (tapi mereka harus ada):
418-
419-
```js run
420-
let sayHi = () => alert("Hello!");
421-
422-
sayHi();
423-
```
424-
425-
Panah fungsi bisa digunakan dengan cara yang sama dengan Expresi Fungsi.
426-
427-
Misalnya, ini contoh yang ditulis ulang dengan `welcome()`:
428-
429-
```js run
430-
let age = prompt("What is your age?", 18);
431-
432-
let welcome = (age < 18) ?
433-
() => alert('Hello') :
434-
() => alert("Greetings!");
435-
436-
welcome(); // ok now
437-
```
438-
439-
Fungsi panah mungkin terlihat asing dan tak mudah terbaca pertama kali, tapi itu cepat berubah seiring mata memandangi strukturnya.
440-
441-
Mereka sangat nyaman untuk aksi sebaris simpel, saat kita malas banget untuk menulis banyak kata.
442-
443-
```smart header="Fungsi panah baris-ganda"
444-
445-
Contoh di atas mengambil argumen dari kiri `=>` dan mengealuasi expresi sisi kanan expression dengan mereka.
446-
447-
kadang kita butuh sesuatu yang lebih komplex, seperti pernyataan atau expresi ganda. Itu juga memungkinkan, tapi sebaiknya kita melampirkan mereka dalam kurung kurawal. Lalu gunakan `return` normal di dalamnya.
448-
449-
Seperti ini:
450-
451-
```js run
452-
let sum = (a, b) => { // kurung kurawal membuka fungsi baris-ganda
453-
let result = a + b;
454-
*!*
455-
return result; // jika kita menggunakan kurung kurawal, gunakan return untuk mendapatkan hasil
456-
*/!*
457-
};
458-
459-
alert( sum(1, 2) ); // 3
460-
```
461-
462-
```smart header="Ada lagi"
463-
Di sini kita memuji fungsi panah karena keringkasan. Tapi belum selesai! Fungsi panah punya fitur menarik lain. Kita akan kembali ke mereka nanti di bab <info:arrow-functions>.
464-
465-
Untuk sekarang, kita sudah bisa menggunakan panah fungsi untuk aksi sebaris dan callback.
466-
```
467-
468358
## Kesimpulan
469-
=======
470-
## Summary
471-
>>>>>>> 2b5ac971c1bd8abe7b17cdcf724afd84799b6cbd:1-js/02-first-steps/15-function-expressions/article.md
472359

473360
- Fungsi adalah nilai. Mereka bisa diset, dikopi atau dideklarasi di kode manapun.
474361
- Jika fungsi dideklarasi sebagai pernyataan terpisah di aliran kode utama, ia disebut "Deklarasi Fungsi".
@@ -478,13 +365,4 @@ Untuk sekarang, kita sudah bisa menggunakan panah fungsi untuk aksi sebaris dan
478365

479366
Di banyak kasus saat kita harus mendeklarasi fungsi, Deklarasi Fungsi disenangi, karena ia terlihat sebelum deklarasi itu sendiri. Itu memberi kita flexibilitas lebih dalam organisasi kode, dan biasa lebih mudah terbaca.
480367

481-
<<<<<<< HEAD:1-js/02-first-steps/15-function-expressions-arrows/article.md
482-
Jadi sebaiknya kita gunakan Expresi Fungsi hanya saat Deklarasi Fungsi tak cocok digunakan. Kita sudah melihat beberapa contoh itu di bab ini, dan kita akan melihat lebih lagi nanti.
483-
484-
Panah fungsi lebih praktis untuk satu baris. Mereka ada dalam dua rasa:
485-
486-
1. Tanpa kurung kurawal: `(...args) => expression` -- sisi kanan ialah expresi: fungsi mengevaluasinya dan mengembalikan hasil.
487-
2. Dengan kurung kurawal: `(...args) => { body }` -- bracket memperbolehkan kita menulis pernyataan ganda di dalam fungsi, tapi kita butuh `return` explisit untuk mengembalikan sesuatu.
488-
=======
489-
So we should use a Function Expression only when a Function Declaration is not fit for the task. We've seen a couple of examples of that in this chapter, and will see more in the future.
490-
>>>>>>> 2b5ac971c1bd8abe7b17cdcf724afd84799b6cbd:1-js/02-first-steps/15-function-expressions/article.md
368+
Jadi sebaiknya kita gunakan Expresi Fungsi hanya saat Deklarasi Fungsi tak cocok digunakan. Kita sudah melihat beberapa contoh itu di bab ini, dan kita akan melihat lebih banyak lagi nanti.

1-js/02-first-steps/16-arrow-functions-basics/1-rewrite-arrow/task.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11

22
# Rewrite with arrow functions
33

4-
<<<<<<< HEAD:1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/task.md
5-
Ganti Expresi Fungsi dengan fungsi panah dalam kode:
6-
=======
7-
Replace Function Expressions with arrow functions in the code below:
8-
>>>>>>> 2b5ac971c1bd8abe7b17cdcf724afd84799b6cbd:1-js/02-first-steps/16-arrow-functions-basics/1-rewrite-arrow/task.md
4+
Ganti Expresi Fungsi dengan fungsi panah dalam kode berikut:
95

106
```js run
117
function ask(question, yes, no) {

1-js/02-first-steps/17-javascript-specials/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,11 +272,7 @@ Kita meliput tiga cara membuat fungsi di JavaScript:
272272
- Parameter bisa punya nilai default: `function sum(a = 1, b = 2) {...}`.
273273
- Fungsi selalu mengembalikan sesuatu. Jika tak ada pernyataan `return`, maka kembaliannya `undefined`.
274274

275-
<<<<<<< HEAD:1-js/02-first-steps/16-javascript-specials/article.md
276-
Detil: lihat <info:function-basics>, <info:function-expressions-arrows>.
277-
=======
278-
Details: see <info:function-basics>, <info:arrow-functions-basics>.
279-
>>>>>>> 2b5ac971c1bd8abe7b17cdcf724afd84799b6cbd:1-js/02-first-steps/17-javascript-specials/article.md
275+
Detil: lihat <info:function-basics>, <info:arrow-functions-basics>.
280276

281277
## Lebih banyak yang akan datang
282278

0 commit comments

Comments
 (0)