Cara menggunakan ES2015 pada JavaScript

Semakin besar sebuah aplikasi, maka akan semakin kompleks juga kode-kode pada aplikasi yang dibuat tersebut. Untuk memudahkan melakukan maintainance atau perawatan maka biasanya kode-kode tersebut akan displit atau dipisah ke dalam beberapa file atau berupa module-module.

Pada ES2015 kita bisa membuat module javascript. Ada dua statements yang biasa digunakan dalam membuat atau memakai module javascript pada es2015 yaitu export statement dan import statement.

Export

Export digunakan untuk mengexport function, objek atau nilai primitif pada sebuah module sehingga bisa digunakan pada program lain dengan menggunakan statement import.

Import

Import bisa dikatakan adalah pasangan dari statement export. Jadi import digunakan tentunya untuk mengimport function,objek,variabel yang sudah di export pada module lain.

Contoh Penggunaan Export dan Import

  1. Menggunakan nama untuk export :

buat sebuah file dengan nama module.js

//module.jsfunction say() {  return “hello world”;}const name = “Budi”;const age = 20;//mengekspor function say dan variabel name sekaligusexport { say, name, age };

Untuk menggunakan module.js pada file atau program lain kita bisa menggunakan perintah import. buat sebuah file dalam folder yang sama dengan nama main.js.

// main.js/*** Import single export. (function say dari module lain)**/import {say} from ’./module.js’;console.log(say()); //hello world/*** mengimport sekaligus dua objek export yaitu function say dan variabel const name**/import {name, age} from ‘./module.js’;console.log(name); //Budiconsole.log(age); //20

2. Menggunakan Default untuk export

Jika kita ingin mengekspor single value atau hanya satu nilai kita bisa menggunakan default export seperti contoh berikut :

// module.js
const text = “Belajar ES2015”;
export default text;

Pada file main.js, untuk mengimportnya kodenya seperti ini:

import text from ‘./module.js’;console.log(text); // Belajar ES2015

Oya untuk contoh kode di atas jika kita jalankan pada browser akan menghasilkan error. Untuk menjalankannya kita perlu mengcompilenya terlebih dahulu menggunakan plugin BabelJS dan Webpack.

Dan Insya Allah pada artikel selanjutnya Saya akan membahas sedikit tentang penggunaan babel + webpack untuk mengcompile kode javascript yang ditulis dengan standard es2015. Terima kasih. happy coding :)

Referensi :

Improvisasi Kode dengan ECMAScript 2015 – Gimana Caranya?

Hallo developer, hallo semuanya!

Sebenarnya pembahasan kali ini agak sedikit usang. Tapi karena Dicoding jarang nge-post artikel teknologi web serta bahasa pemrogramannya, makannya saya agak tertarik memperbanyak  tulisan mengangkat topik tersebut.

💻 Mulai Belajar Pemrograman

Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.

Daftar Sekarang

Apa itu ES6 atau ECMAScript 2015?

Cara menggunakan ES2015 pada JavaScript

ECMAScript unofficial logo from https://github.com/wingsuitist/ecmascript-logo

Belajar Javascript saja sudah bikin kita bingung karena kondisi tertentu. Nah, jangan sampai penamaan versinya juga buat kalian bingung ya. ES6, ES2015 dan ECMAScript 2015 itu sama. ES6 merupakan format penamaan yang digunakan pada versi sebelumnya yaitu ES5 yang dirilis pada Desember 2009, Yup 10 tahun silam! Lalu, Juni 2015 barulah ES6 ini muncul diikuti dengan ketetapan baru untuk penamaan versinya, yang akhirnya menggunakan tahun sebagai format penamaanya. Jadi mau kalian sebut ES6, ES2015 ataupun ECMAScript 2015 itu merujuk ke hal yang sama.

Jika kalian masih dibuat pusing penamaannya? Ada artikel singkat yang membahas hal ini. https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c

ECMAScript 2015: Syntax Improvement

ECMAScript 2015 membawa banyak sekali perubahan, karena gap atau jarak waktu dari versi sebelumnya memang relatif jauh, sehingga ada yang bilang juga sebagai bahasa JavaScript modern. Untuk syntax-nya sendiri banyak yang di improvisasi, Oke mari kita bahas satu persatu

Let dan Const

Sekarang terdapat cara baru untuk mendeklarasikan sebuah variabel, bisa menggunakan let dan const. Sebelum ECMAScript 2015, hanya terdapat satu cara yaitu dengan menggunakan var. Cara ini memang sangat simple tetapi beberapa kasus penggunaanya membuat kita bingung.

Bingung#1 – Hoisting

Apa itu hoisting? Yups, sesuai artinya “Mengangkat” variabel yang dideklarasikan menggunakan var ini dapat diinisialisasi terlebih dahulu sebelum dideklarasikan, Contoh

x=100

varx

console.log(x)/* output -> 100 */


Ayo, bingung kan kenapa gak error? Ini dikarenakan proses Hoisting, sebenarnya di belakang layar deklarasi variabel x diangkat ke atas sehingga kode yang tampak seperti ini

varx

x=100

console.log(x)/* output -> 100 */


Nah masalah ini sudah terselesaikan jika kalian menggunakan let.

x=100

letx

console.log(x)/* output -> ReferenceError: x is not defined */

Bingung#2 – Redeclare

Variabel yang dideklarasikan dengan var dapat dideklarasikan lagi dengan penamaan yang sama. Contoh

vargreet="Hallo"

vargreet="World!"

console.log(greet)/* output -> "World!" */


Sedangkan jika menggunakan let sudah sangat jelas hal ini tidak dapat dilakukan

let greet="Hallo"

let greet="World!"

console.log(greet)/* SyntaxError: Identifier 'greet' has already been declared */


Selain kedua kasus tersebut, var juga dapat membuat bingung dalam scopingnya. Sehingga penggunaan var sudah tak lagi disarankan.

Kemudian const digunakan untuk mendeklarasikan sebuah variabel yang sifatnya immutable atau tidak perlu diinisialisasi kembali. Jika kalian menginisialisasi nilai variabel dengan menggunakan const, maka akan mendapati eror “TypeError: Assignment to constant variable.

constwajahmu="GANTENG POOL!"

wajahmu="JADI JELEK!"

console.log(wajahmu)/* TypeError: Assignment to constant variable. */

Template Literals

Sebelum ECMAScript 2015 proses penggabungan nilai string (concatenating) dilakukan dengan menggunakan operator (+).

let user={

 firstName:"Dimas",

 lastName:"Saputra",

 age:18

}

console.log("Nama: "+user.firstName+" "+user.lastName+", Umur: "+user.age);/* output-> Nama: Dimas Saputra, Umur: 18 */


Mungkin hal tersebut tidak terlalu repot, tapi jika dalam proses penggabungan tersebut terdapat garis baru, ini jadi sangat merepotkan.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

let user={

 firstName:"Dimas",

 lastName:"Saputra",

 age:18

}

let admin={

 name:"Jane",

 position:"Marketing"

}

let message="Dear, "+ user.firstName+" "+user.lastName+ "\n\n"+

"Selamat ulang tahun yang ke-"+user.age+" semoga selalu diberikan kesehatan."+"\n\n"+

"Best Regards,\n"+

admin.name+"\n"+

admin.position;

console.log(message);

/* output ->

Dear, Dimas Saputra

Selamat ulang tahun yang ke-18 semoga selalu diberikan kesehatan.

Best Regards,

Jane

Marketing

*/


kalian bisa lihat betapa repotnya membuat pesan tersebut. Entah berapa banyak operator (+) yang perlu kita gunakan. Dengan template literals proses tersebut dapat kita sederhanakan. 

Untuk menggunakan template literals, kita gunakan tanda backticks  menggantikan tanda single quotes (‘) atau double quotes (“) yang digunakan sebelumnya. Kemudian untuk menggabungkan nilai string, kita dapat gunakan tanda ${ } di dalam tanda backticks tersebut.

let user={

 firstName:"Dimas",

 lastName:"Saputra",

 age:18

}

console.log(`Nama: ${user.firstName}${user.lastName},Umur:${user.age}`);


Template literals juga dapat membaca karakter line space secara langsung tanpa harus menggunakan escape character. 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

let user={

 firstName:"Dimas",

 lastName:"Saputra",

 age:18

}

let admin={

 name:"Jane",

 position:"Marketing"

}

let message=`Dear, ${user.firstName}${user.lastName}

Selamatulangtahunyangke-${user.age}semoga selalu diberikan kesehatan.

Best Regards,

${admin.name}

${admin.position}`;

console.log(message);

/*

Dear, Dimas Saputra

Selamat ulang tahun yang ke-18 semoga selalu diberikan kesehatan.

Best Regards,

Jane

Marketing

*/

Destructuring Array dan Object

Apa sih destructuring itu? Destructuring pada JavaScript merupakan syntax yang dapat mengeluarkan nilai dari array atau properties dari sebuah object ke dalam satuan variabel yang berbeda. Mendestruksikan sebuah array atau object sebelum ECMAScript 2015 dilakukan dengan cara klasik seperti ini

// ES5

constfoods=['Pie','Cake','Honey']

constmyFood=foods[0]

constyourFood =foods[1]

constourFood=foods[2]

console.log(myFood,yourFood,ourFood)/* output-> Pie Cake Honey */


Begitu juga dengan object

// ES5

constprofile={

 firstName:"Dimas",

 lastName:"Saputra",

 age:18

}

constfirstName=profile.firstName

constlastName=profile.lastName

constage=profile.age

console.log(firstName, lastName,age)/* output -> Dimas Saputra 18 */


Setelah ECMAScript 2015, mendesktrukturkan sebuah nilai array dan object akan lebih mudah.

// ES6

constfoods=['Pie','Cake','Honey']

const[myFood,yourFood,ourFood]= foods

console.log(myFood,yourFood,ourFood)/* output-> Pie Cake Honey */

//ES6

constprofile={

 firstName:"Dimas",

 lastName:"Saputra",

 age:18

}

const{firstName,lastName,age}=profile

console.log(firstName,lastName,age)/* output -> Dimas Saputra 18 */


Untuk array, kalian juga bisa memilih nilai mana saja yang ingin kita ambil, Contohnya

// ES6

constnumbers=[1,2,3,4,5,6,7,8]

const[first,second ,,,fifth]=numbers

console.log(first,second,fifth)/* output -> 1 2 5 */


Bagaimana? Sangat mudah bukan? Atau kalian lebih suka cara klasik?

Object Literals

Object Literals merupakan shorthand atau cara cepat dalam menginisialisasikan sebuah properti dalam object. Biasanya ketika membuat sebuah object kita membutuhkan sebuah key: kemudian nilai nya. 

// ES5

functiongetTriangle(base,height){

 return{

   base:base,

    height:height

 }

}


Dengan object literals ini kita dapat langsung menginisialisasikan sebuah properti melalui variabel tanpa harus menggunakan key. Sebagai gantinya, nama dari variabel tersebut akan menjadi key. Tentunya hal ini dapat meminimalkan redundansi dalam penulisan sebuah kode.

// ES6

functiongetTriangle(base,height){

 return{

   base,

    height,

}

}


Begitu juga dengan penulisan sebuah method dalam object.

// ES5

functiongetTriangle(base,height){

 return{

   base:base,

    height:height,

   area:function(){

     return(base *height)/2

   }

 }

}

console.log(getTriangle(3,5).area()) /* output -> 7.5 */

kita tidak memerlukan lagi keyword function untuk membuatnya.

// ES6

functiongetTriangle(base,height){

 return{

   base,

    height,

   area(){

     return(base *height)/2

    }

 }

}

console.log(getTriangle(3,5).area())/* output -> 7.5 */

For..of

Untuk melakukan looping pada sebuah array, selama ini kita gunakan for loop. Untuk menggunakannya, biasanya kita membuat sebuah variabel iterator yang berperan sebagai index atau mendapatkan nilai posisi ketika proses loop berjalan. 

constfoods=["Cake","Pie","Donut","Pizza"]

for(leti=0;i< foods.length;i++){

 console.log(foods[i])

}

/* output

Cake

Pie

Donut

Pizza

*/


Cara tersebut sudah lama digunakan oleh banyak programmer, termasuk kalian bukan? Nah, for..of loop ini dapat membuat proses looping pada sebuah object iterable (generalisasi array) menjadi mudah dan lebih dimengerti.


constfoods=["Cake","Pie","Donut","Pizza"]

for(let food of foods){

  console.log(food)

}

/* output

Cake

Pie

Donut

Pizza

*/


Pada for..of kita tidak lagi membutuhkan counter logic (i++) dan sebuah exit condition (i < foods.length). Proses loop akan berjalan sesuai panjang nilai iterator (foods), dan nilai dalam setiap indexnya pada proses loop akan disimpan pada variabel (food).

Spread operator

Masih tentang iterator nih! Sesuai namanya “Spread” yang berarti membentangkan, operator ini digunakan untuk membentangkan nilai array menjadi beberapa elements. Untuk melakukannya kita gunakan three consecutive dot (…) pada sebuah array. Look at this code baby!

constfoods=["Cake","Pie","Donut","Pizza"]

console.log(foods)/* output -> [ 'Cake', 'Pie', 'Donut', 'Pizza' ] */


Pada kode tersebut hasil yang dicetak adalah sebuah array, karena kita mencetak nilai foods itu sendiri. Nah, dengan menggunakan spread operator kita dapat membentangkan nilai – nilai dalam array tersebut.

constfoods=["Cake","Pie","Donut","Pizza"]

console.log(...foods)/* output -> Cake Pie Donut Pizza */


Terlihat kan perbedaanya? Contoh kasus kapan kita harus menggunakan spread operator adalah ketika kita  hendak menggabungkan dua buah array dalam object array baru. Jika tidak menggunakan spread operator ini maka hasilnya seperti ini:

constfoods=["Cake","Pie","Donut","Pizza"]

constdrinks=["Lime","Tea", "Cola","Redbull"]

constfavorites=[foods,drinks]

console.log(favorites)/* output -> [Array(4), Array(4)] */


Whoops! Nilai array tidak tergabung. Lantas dengan menggunakan spread operator maka hasilnya akan seperti ini:

constfoods=["Cake","Pie","Donut","Pizza"]

constdrinks=["Lime","Tea", "Cola","Redbull"]

constfavorites=[...foods,...drinks]

console.log(...favorites) /* output -> Cake Pie Donut Pizza Lime Tea Cola Redbull */


Mantap kan?

Rest parameters

Jika Spread operator adalah pelebur array menjadi multiple element yang berbeda, nah rest parameter ini adalah kebalikan dari fungsi tersebut. Kita dapat menggabungkan beberapa elemen menjadi satu array. Teknik ini sangat bermanfaat ketika kita hendak membuat sebuah variadic function yaitu fungsi yang dapat menyediakan argument tidak terbatas. Contohnya ketika membuat fungsi sum() seperti ini:

functionsum(...numbers){

 varresult=0;

 for(let number of numbers){

   result+=number

 }

 returnresult;

}

Kesimpulan

Well, biar gak terlalu panjang, cukup sampai sini dulu pembahasan kali ini. Dengan ini saya harap kalian tahu cara mengimprovisasi kode dengan ECMAScript 2015. Make your code fun, clean and shorter tentunya!

Sebenarnya masih ada improvisasi lain contohnya dalam penulisan fungsi, tapi nanti akan dibahas pada artikel selanjutnya, jadi tunggu saja ya. COMING SOON!

 Improvisasi Kode dengan ECMAScript 2015 – Gimana Caranya? – end

Artikel Terkait Lainnya

https://www.dicoding.com/blog/mengenal-fungsi-asynchronous-request-pada-javascript/

https://www.dicoding.com/blog/dasar-tampilan-responsif-pada-website/

https://www.dicoding.com/blog/cara-membuat-browser-menjadi-lokal-web-server/

Suka dengan Materi Ini?

Mungkin ini saatnya buatmu coba kelas Membangun Progressive Web Apps  di Dicoding Academy

Cara menggunakan ES2015 pada JavaScript

Bagaimana cara memanggil fungsi di JavaScript?

Cara Memanggil/Eksekusi Fungsi Kita bisa memanggil fungsi di dalam kode Javascript dengan menuliskan nama fungsinya seperti ini: namaFungsi(); Contoh: // membuat fungsi function sayHello(){ console.log("Hello World!"); } // memanggil fungsi sayHello() // maka akan menghasilkan -> Hello World!

Kapan arrow function digunakan?

dengan menggunakan arrow function pada javascript kita bisa lebih menghemat waktu pada saat mendevelop sebuah script javascript, selain itu arrow function ini juga akan sangat berguna saat kita membuat aplikasi web/android menggunakan framework javascript, seperti React dan React native nantinya.

Apa itu es 6?

ES6 adalah singkatan dari ECMAScript 6. ECMAScript 6 sendiri digunakan untuk memperkuat JavaScript dan ES6 adalah versi-6 ECMAScript yang diterbitkan pada tahun 2015, dan juga dikenal sebagai ECMAScript 2015.

Apa tanda yang dapat digunakan untuk membuat objek di JavaScript?

Objek pada javascript, dapat dibuat dengan tanda kurung kurawal dengan isi berupa key dan value.