Skip to content

Commit 2fcbb0b

Browse files
authored
Merge pull request #177 from juuni26/development
fix conflict from updated main repository in en.javascript
2 parents dd455c4 + d50b30b commit 2fcbb0b

File tree

106 files changed

+720
-928
lines changed

Some content is hidden

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

106 files changed

+720
-928
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ Contoh bahasa yang dimaksud:
111111
- [Flow](http://flow.org/) juga menambahkan data typing, tapi dalam cara berbeda. Dikembangkan oleh Facebook.
112112
- [Dart](https://www.dartlang.org/) ialah bahasa mandiri yang punya engine sendiri yang berjalan di lingkungan non-peramban (seperti mobile apps), tapi bisa juga ditranspile ke JavaScript. Dikembangkan oleh Google.
113113
- [Brython](https://brython.info/) adalah transpiler python untuk Javascript yang memperbolehkan untuk menulis kode aplikasi didalam Python murni tanpa Javascript.
114+
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) adalah sebuah bahasa pemograman modern, ringkas dan aman yang dapat ditargetkan untuk browser atau Node.
114115

115116
Masih banyak lagi. Tentunya, jika kita menggunakan salah satu bahasa yang ditranspile tersebut, kita sebaiknya juga paham JavaScript untuk mengerti apa yang mereka lakukan.
116117

1-js/02-first-steps/04-variables/2-declare-variables/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Itu simpel:
66
let ourPlanetName = "Earth";
77
```
88

9-
Ingat, kita bisa menggunakan nama lebih pendek `planet`, tapi itu tak akan jelas planet apa. Bagus jika lebih bertele-tele. Minimal hingga variabel isNotTooLong.
9+
Ingat, kita bisa menggunakan nama lebih pendek `planet`, tapi itu tak akan jelas planet apa. Bagus jika lebih panjang dan deskriptif. Minimal hingga variabel isNotTooLong.
1010

1111
## Nama pengunjung saat ini
1212

1-js/02-first-steps/08-operators/article.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ alert(2 + 2 + '1' ); // "41" dan bukan "221"
109109

110110
Disini, operator bekerja secara bergantian. Pertama `+` menambahkan dua angka, jadi akan menghasilkan `4`, lalu selanjutnya `+` menambahkan string `1` kedalamnya, jadi akan menjadi seperti `4 + '1' = 41`.
111111

112+
```js run
113+
alert('1' + 2 + 2); // "122" dan bukan "14"
114+
```
115+
disini, bilangan pertama adalah string, kompiler memperlakukan dua bilangan lainnya sebagai string juga. Bilangan `2` ditambahkan dengan `1`, jadi `'1' + 2 = "12"` dan `"12" + 2 = "122"`.
116+
112117
Operator `+` hanyalah satu-satunya operator yang mendukung penggunaan string dengan cara semacan itu. Operator aritmatika lainnya hanya bekerja dengan angka dan selalu mengubah operannya menjadi angka.
113118

114119
Ini adalah contoh untuk pengurangan dan pembagian:
@@ -183,11 +188,7 @@ Tanda kurung mengesampingkan presedensi apapun, jadi jika kita tak puas dengan u
183188

184189
Ada banyak operator di JavaScript. Tiap operator punya nomor presedensi masing-masing. Nomor yang lebih besar dieksekusi terlebih dahulu. Jika presedensinya sama, urutan eksekusinya dari kiri ke kanan.
185190

186-
<<<<<<< HEAD
187191
Di sini adalah extrak dari [tabel presedensi](https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence) (kamu tak usah mengingat ini, tapi catat bahwa operator unary lebih tinggi dari binary terkait):
188-
=======
189-
Here's an extract from the [precedence table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones):
190-
>>>>>>> f489145731a45df6e369a3c063e52250f3f0061d
191192

192193
| Presedensi | Nama | Tanda |
193194
|------------|------|------|
@@ -435,11 +436,7 @@ Daftar operator:
435436
- RIGHT SHIFT ( `>>` )
436437
- ZERO-FILL RIGHT SHIFT ( `>>>` )
437438

438-
<<<<<<< HEAD
439439
Operator seperti diatas sangat jarang digunakan, ketika kita membutuhkan untuk memainkan angka di level paling rendah (bitwise). Kita tidak akan membutuhkan operator seperti ini dalam waktu dekat, sebagaimana dalam pengembangan web penggunaan operator seperti itu lebih sedikit, tetapi di area yang spesial, seperti kriptographi, operator seperti itu sangan dibutuhkan. Kamu bisa membaca artikel [Bitwise Operators](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) di MDN ketika kamu membutuhkannya.
440-
=======
441-
These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise) chapter on MDN when a need arises.
442-
>>>>>>> e074a5f825a3d10b0c1e5e82561162f75516d7e3
443440

444441
## Koma
445442

1-js/02-first-steps/14-switch/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ switch (a) {
4747
break;
4848
*/!*
4949
case 5:
50-
alert( 'Too large' );
50+
alert( 'Too big' );
5151
break;
5252
default:
5353
alert( "I don't know such values" );

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,7 @@ Penetapan
144144
: Ada penetapan simpel: `a = b` dan penetapan kombinasi seperti `a *= 2`.
145145

146146
Bitwise
147-
<<<<<<< HEAD
148147
: Operator bitwise bekerja dengan integer 32-bit di bit-level paling kecil: lihat [docs](mdn:/JavaScript/Reference/Operators/Bitwise_Operators) ketika mereka dibutuhkan.
149-
=======
150-
: Bitwise operators work with 32-bit integers at the lowest, bit-level: see the [docs](mdn:/JavaScript/Guide/Expressions_and_Operators#Bitwise) when they are needed.
151-
>>>>>>> d6e88647b42992f204f57401160ebae92b358c0d
152148

153149
Kondisional
154150
: Satu-satunya operator dengan tiga parameter: `cond ? resultA : resultB`. Jika `cond` truthy, mengembalikan `resultA`, jika tidak `resultB`.
Lines changed: 58 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,90 @@
1-
# Polyfills
1+
# Polyfills and transpilers
22

33
JavaScript secara konsisten terus berevolusi. Proposal-proposal untuk menambah fitur-fitur baru terus bermunculan. Proposal-proposal ini akan didaftarkan pada <https://tc39.github.io/ecma262/> jika memang berpotensi dan layak untuk ditambahkan dalam standard dalam bahasa pemrograman JavaScript. Kemudian proposal-proposal yang telah diterima akan dimasukkan dalam [daftar spesifikasi](http://www.ecma-international.org/publications/standards/Ecma-262.htm) JavaScript.
44

55
Tim yang mengurus JavaScript mengerti dan akan mengusulkan mana dari proposal-proposal ini yang akan diimplementasikan terlebih dahulu. Tim ini boleh saja nanti memasukkan proposal-proposal ini kedalam kategori 'draft / dalam perancangan' atau 'postpone / tunda' karena mungkin menurut mereka proposal-proposal ini menarik untuk didiskusikan lebih dalam atau sulit untuk direalisasikan.
66

77
Sangat wajar jika kebanyakan dari browser-browser yang ada hanya mengimplementasikan bagian-bagian yang tidak terlalu sulit.
88

9-
Jika kalian ingin tahu apa saja yang didukung oleh JavaScript, bisa cek di: <https://kangax.github.io/compat-table/es6/> .
9+
Sebuah halaman yang bagus untuk melihat kondisi terkini dari fitur yang didukung oleh bahasa ini ialah <https://kangax.github.io/compat-table/es6/> (isinya banyak, kita masih banyak yang belum dipelajari)
1010

11-
## Babel
11+
Sebagai programmer, kita suka untuk menggunakan fitur yang terbaru. lebih banyak fitur bagus - lebih baik lagi!
1212

13-
Ketika kita menggunakan fitur-fitur modern dari JavaScript, beberapa engine browser bisa jadi belum mengenal bagaimana mengerjakan perintah dari fitur-fitur tersebut. Biasanya ada beberapa fitur baru tertentu yang masih belum didukung sepenuhnya oleh browser kebanyakan.
13+
di sisi lain, bagaimana membuat kodingan modern bekerja di mesin yang lama yang tidak mengetahui fitur-fitur terbaru ?
1414

15-
Jadi, inilah gunanya Babel.
15+
Ada dua cara untuk itu:
1616

17-
[Babel](https://babeljs.io) adalah [sebuah utilitas penerjemah](https://en.wikipedia.org/wiki/Source-to-source_compiler) perintah dari fitur-fitur baru ini dengan cara menuliskannya kembali kedalam perintah standar JavaScript.
17+
1. Transpilers.
18+
2. Polyfills.
1819

19-
Sebenarnya, ada dua bagian dari Babel:
20+
di chapter ini, tujuan kita adalah untuk mendapatkan intisari cara kerjanya, dan tempatnya dalam proses pengembangan web.
2021

21-
1. Traspiler, utilitas penerjemah dari Babel.
22+
## Transpilers
2223

23-
Biasanya, Developer akan menjalankan perintah ini di komputer mereka terlebih dahulu. Utilitas penerjemah dari Babel ini kemudian menuliskan kembali perintah-perintah di file JavaScript kedalam perintah-perintah yang dimengerti oleh JavaScript standar. Kemudian file Javascript yang berisi perintah standar Javascript inilah yang akan dibaca oleh browser yang dipakai pengguna. Sebagai contoh, [Webpack](http://webpack.github.io/) sudah memiliki fitur Babel yang akan melakukan proses penerjemahan setiap kali Developer menyimpan file JavaScript yang ditulis dengan fitur-fitur moderen. Ini tentu saja mempermudah proses pengembangan sebuah aplikasi.
24+
Sebuah [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) adalah perangkat lunak khusus yang dapat mengurai ("membaca dan memahami") kode modern, dan menulis ulang menggunakan konstruksi sintaks yang lebih lama, sehingga hasilnya akan sama.
2425

25-
2. Polyfill itu sendiri.
26+
Misalnya. JavaScript sebelum tahun 2020 tidak memiliki "nullish coalescing operator" `??`. Jadi, jika pengunjung menggunakan browser yang sudah ketinggalan zaman, ia mungkin gagal memahami kode seperti `height = height ?? 100`
2627

27-
Fitur-fitur baru bisa saja memasukkan fungsi-fungsi built-in dan constructs jenis baru.
28-
Transpiler, utilitas penerjemah dari poin 1 diatas, menulis fungsi-fungsi built-in dan constructs ini kembali kedalam perintah stardard dari JavaScript.
28+
Sebuah transpiler akan menganalisa kodingan kita dan menulis `height ?? 100` menjadi `(height !== undefined && height !== null) ? height : 100`.
2929

30-
Seperti disebutkan diatas, JavaScript adalah sebuah bahasa pemrograman yang sangat dinamis. Skrip-skrip baru terus ditambahkan kedalam JavaScript dengan tujuan untuk membuat fungsi-fungsi baru menjadi dapat dibaca oleh penerjemah JavaScript standar.
30+
```js
31+
// sebelum menjalankan transpiler
32+
height = height ?? 100;
3133

32-
<<<<<<< HEAD
33-
Skrip-skrip tambahan inilah yang disebut Polyfill. Skrip-skrip ini biasanya berupa fungsi-fungsi yang bertujuan menambah atau memodifikasi perbendaharaan JavaScript standar agar mampu mengenal fitur-fitur modern.
34-
=======
35-
New language features may include not only syntax constructs, but also built-in functions.
36-
The transpiler rewrites the code, transforming syntax constructs into older ones. But as for new built-in functions, we need to implement them. JavaScript is a highly dynamic language, scripts may add/modify any functions, so that they behave according to the modern standard.
37-
>>>>>>> dccca58f268ad6d5a6f2160613a8ea3c5cd53a2d
34+
// setelah transpile dijalankan
35+
height = (height !== undefined && height !== null) ? height : 100;
36+
```
3837
39-
Polifyll yang sering digunakan:
38+
Sekarang kode yang ditulis ulang cocok untuk mesin JavaScript lama.
4039
41-
- [core js](https://github.com/zloirock/core-js).
40+
Biasanya, pengembang menjalankan transpiler di komputer mereka sendiri, dan kemudian menyebarkan kode yang ditranspilasi ke server.
4241
43-
Core js mendukung banyak fitur baru, dan bisa dipersonalisasi sehingga kita bisa memilih fitur-fitur baru apa saja yang hendak kita gunakan dalam proyek kita.
42+
Berbicara tentang nama, [Babel](https://babeljs.io) adalah salah satu transpiler paling terkenal di luar sana.
4443
45-
- [polyfill.io](http://polyfill.io).
44+
Sistem pembangunan proyek modern, seperti [webpack](http://webpack.github.io/), menyediakan sarana untuk menjalankan transpiler secara otomatis pada setiap perubahan kode, sehingga sangat mudah untuk diintegrasikan ke dalam proses pengembangan.
4645
47-
Ini adalah sebuah website yang menyediakan skrip-skrip dan polifyll-nya. Kita juga bisa dapat mengetahui browser-browser apa saja yang mendukung fitur-fitur moderen tersebut.
46+
## Polyfills
4847
49-
Oleh karena itu, jika kita ingin menggunakan fitur-fitur baru dari JavaScript, pastinya kita akan butuh sebuah Polifyll dan Transpiler (utilitas penerjemah)
48+
Fitur bahasa baru tidak hanya mencakup konstruksi dan operator sintaks, tetapi juga fungsi bawaan.
5049
51-
## Contoh Pada File Tutorial
50+
Misalnya, `Math.trunc (n)` adalah fungsi yang "memotong" bagian desimal dari sebuah angka, misalnya `Math.trunc (1.23) = 1`.
5251
53-
````online
54-
Contoh-contoh yang bekerja saat dipanggil, contohnya:
52+
Di beberapa mesin JavaScript (sangat usang), tidak ada `Math.trunc`, jadi kode seperti itu akan gagal.
5553
56-
```js run
57-
alert('Press the "Play" button in the upper-right corner to run');
58-
```
54+
karena kita berbicara tentang fungsi baru, bukan perubahan sintaks, tidak perlu mentranspilasi apa pun di sini. Kita hanya perlu mendeklarasikan fungsi yang hilang.
5955
60-
Contoh-contoh yang menggunakan JavaScript modern dan akan hanya bekerja pada browser-browser yang mendukungnya.
56+
Skrip yang memperbarui / menambahkan fungsi baru disebut "polyfill". Ini "mengisi" celah dan menambahkan implementasi yang hilang.
6157
62-
````
58+
Untuk kasus khusus ini, polyfill untuk `Math.trunc` adalah skrip yang mengimplementasikannya, seperti ini:
6359
64-
```offline
65-
Karena kamu sedang membaca versi offline, maka contoh-contoh pada PDF ini tidak bisa dijalankan. Mungkin beberapa EPUB bisa.
60+
```js
61+
if (!Math.trunc) { // kalo ga ada fungsi seperti ini
62+
// implementasikan
63+
Math.trunc = function(number) {
64+
// Math.ceil dan Math.floor ada bahkan di mesin JavaScript yang lama
65+
// mereka akan dibahas nanti di tutorial
66+
return number < 0 ? Math.ceil(number) : Math.floor(number);
67+
};
68+
}
6669
```
6770
68-
Google Chrome biasanya salah satu browser yang selalu mengikuti perkembangan implementasi fitur-fitur baru JavaScript. Kerennya lagi, jika kamu mengetik sebuah skrip menggunakan sebuah fitur baru, Google Chrome akan menterjemahkannya otomatis tanpa kamu harus menggunakan sebuah Polifyll dan sebuah mesin penerjemah.
71+
JavaScript adalah bahasa yang sangat dinamis, skrip dapat menambah / memodifikasi fungsi apa pun, bahkan termasuk yang sudah ada di dalamnya.
72+
73+
Dua library polyfill yang menarik adalah:
74+
- [core js](https://github.com/zloirock/core-js) yang mendukung banyak hal, memungkinkan untuk kita memasukkan hanya fitur yang dibutuhkan.
75+
- [polyfill.io](http://polyfill.io) layanan yang menyediakan skrip dengan polyfills, bergantung pada fitur dan browser pengguna.
76+
77+
78+
## Kesimpulan
79+
80+
Di bab ini, kami ingin memotivasi Anda untuk mempelajari fitur bahasa modern dan bahkan "yang paling mutakhir", meskipun fitur tersebut belum didukung dengan baik oleh mesin JavaScript.
81+
82+
Jangan lupa untuk menggunakan transpiler (jika menggunakan sintaks atau operator modern) dan polyfill (untuk menambahkan fungsi yang mungkin hilang). Dan mereka akan memastikan bahwa kodenya berfungsi.
83+
84+
Misalnya, nanti saat Anda sudah terbiasa dengan JavaScript, Anda dapat menyiapkan sistem pembuatan kode berdasarkan [webpack](http://webpack.github.io/) dengan [babel-loader](https://github.com/babel/babel-loader).
85+
86+
Sumber daya bagus yang menunjukkan status dukungan saat ini untuk berbagai fitur:
87+
- <https://kangax.github.io/compat-table/es6/> - untuk JavaScript murni.
88+
- <https://caniuse.com/> - untuk fungsi terkait dengan browser.
89+
90+
P.S. Google Chrome biasanya paling mutakhir dengan fitur bahasa, coba saja jika demo tutorial gagal. Sebagian besar demo tutorial berfungsi dengan browser modern apa pun.

1-js/04-object-basics/01-object/article.md

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,30 +92,6 @@ let user = {
9292
```
9393
Itu disebut koma "buntut" atau "menggantung". Memudahkan kita menambah/menghapus/memindahkan properti, karena semua barus menjadi mirip.
9494

95-
````smart header="Objek dengan const bisa diubah"
96-
Perhatikan: sebuah object yang dideklarasikan dengan `const` *bisa* diubah.
97-
98-
Contoh:
99-
100-
```js run
101-
const user = {
102-
name: "John"
103-
};
104-
105-
*!*
106-
user.name = "Pete"; // (*)
107-
*/!*
108-
109-
alert(user.name); // Pete
110-
```
111-
112-
Terlihat bahwa baris `(*)` menciptakan error, tapi tidak. `const` menentukan nilai dari `user`, tapi tidak untuk isinya.
113-
114-
`const` harusnya mengembalikan error jika kita mencoba mengubah `user=...` seluruhnya.
115-
116-
Ada cara lain untuk mengubah properti objek konstan(constant), kita akan mengulasnya nanti didalam bab <info:property-descriptors>.
117-
````
118-
11995
## Kurung siku
12096

12197
Untuk properti multi-kata, akses dot tak bekerja:

0 commit comments

Comments
 (0)