JavaScript : Tipe Data JavaScript

Tipe data pada dasarnya menentukan jenis data apa yang dapat disimpan dan dimanipulasi dalam suatu program.

Ada enam tipe data dasar dalam JavaScript yang dapat dibagi menjadi tiga kategori utama: primitif (atau primer), komposit (atau referensi), dan tipe data khusus. String, Number, dan Boolean adalah tipe data primitif. Objek, Array, dan Fungsi (yang semuanya jenis objek) adalah tipe data komposit. Sedangkan Undefined dan Null adalah tipe data khusus.

Tipe data primitif hanya dapat menampung satu nilai pada satu waktu, sedangkan tipe data komposit dapat menyimpan koleksi nilai dan entitas yang lebih kompleks. Mari kita bahas masing-masing secara rinci.

Tipe Data String

Tipe data string digunakan untuk mewakili data tekstual (mis. Urutan karakter). String dibuat menggunakan tanda kutip tunggal atau ganda di sekitar satu atau lebih karakter, seperti yang ditunjukkan di bawah ini:

var a = 'Hi there!';  // using single quotes
var b = "Hi there!";  // using double quotes

Kalian dapat memasukkan kutipan di dalam string selama tidak cocok dengan kutipan terlampir.

var a = "Let's have a cup of coffee."; // single quote inside double quotes
var b = 'He said "Hello" and left.';  // double quotes inside single quotes
var c = 'We\'ll never give up.';     // escaping single quote with backslash
Tipe Data Number

Jenis data angka digunakan untuk mewakili angka plus atau minus dengan atau tanpa desimal, atau angka yang ditulis menggunakan notasi eksponensial mis. 1.5e-4 (setara dengan 1.5×10-4).

var a = 25;         // integer
var b = 80.5;       // floating-point number
var c = 4.25e+6;    // exponential notation, same as 4.25e6 or 4250000
var d = 4.25e-6;    // exponential notation, same as 0.00000425

Tipe data Number juga mencakup beberapa nilai khusus yaitu: Infinity, -Infinity dan NaN. Infinity mewakili Infinity matematika ∞, yang lebih besar dari angka apa pun. Infinity adalah hasil dari membagi angka nol dengan 0, seperti yang ditunjukkan di bawah ini:

alert(16 / 0);  // Output: Infinity
alert(-16 / 0); // Output: -Infinity
alert(16 / -0); // Output: -Infinity

Sementara NaN mewakili nilai Not-a-Number khusus. Ini adalah hasil dari operasi matematika yang tidak valid atau tidak terdefinisi, seperti mengambil akar kuadrat dari -1 atau membagi 0 dengan 0, dll.

alert("Some text" / 2);       // Output: NaN
alert("Some text" / 2 + 10);  // Output: NaN
alert(Math.sqrt(-1));         // Output: NaN
Tipe Data Boolean

Tipe data Boolean hanya bisa menampung dua nilai: true atau false. Biasanya digunakan untuk menyimpan nilai seperti yes (true) atau no (false), on (true) atau off (false), dll. Seperti yang ditunjukkan di bawah ini:

var isReading = true;   // yes, I'm reading
var isSleeping = false; // no, I'm not sleeping

Nilai Boolean juga bisa sebagai hasil perbandingan dalam suatu program. Contoh berikut membandingkan dua variabel dan menunjukkan hasilnya dalam kotak dialog alert:

var a = 2, b = 5, c = 10;
 
alert(b > a) // Output: true
alert(b > c) // Output: false
Tipe Data Tidak Terdefinisi (Undefined)

Tipe data undefined hanya dapat memiliki satu nilai khusus yaitu nilai undefined. Jika suatu variabel telah dideklarasikan, tetapi belum diberi nilai, nilainya undefined.

var a;
var b = "Hello World!"
 
alert(a) // Output: undefined
alert(b) // Output: Hello World!
Tipe Data Null

Ini adalah tipe data khusus lain yang hanya dapat memiliki satu nilai yaitu nilai null. Nilai null berarti tidak ada nilai. Ini tidak setara dengan string kosong (“”) atau 0, itu tidak berarti apa-apa.

Suatu variabel dapat secara eksplisit dikosongkan dari isinya saat ini dengan menetapkannya sebagai nilai null.

var a = null;
alert(a); // Output: null
 
var b = "Hello World!"
alert(b); // Output: Hello World!
 
b = null;
alert(b) // Output: null
Tipe Data Object

Objek adalah tipe data kompleks yang memungkinkan kalian untuk menyimpan koleksi data.

Objek berisi properti, didefinisikan sebagai pasangan key-value. Properti kunci (nama) selalu berupa string, tetapi nilainya bisa berupa tipe data apa pun, seperti string, angka, boolean, atau tipe data kompleks seperti array, fungsi, dan objek lainnya.

Contoh berikut akan menunjukkan kepada kalian cara paling sederhana untuk membuat objek dalam JavaScript:

var emptyObject = {};
var person = {"name": "Clark", "surname": "Kent", "age": "36"};
 
// For better reading
var car = {
    "modal": "BMW X3",
    "color": "white",
    "doors": 5
}

Kalian dapat menghilangkan tanda kutip di sekitar nama properti jika nama itu adalah nama JavaScript yang valid. Itu berarti tanda kutip diperlukan di sekitar “first-name” tetapi opsional di sekitar firstname. Jadi objek car dalam contoh di atas juga dapat ditulis sebagai:

var car = {
    modal: "BMW X3",
    color: "white",
    doors: 5
}
Tipe Data Array

Array adalah jenis objek yang digunakan untuk menyimpan banyak nilai dalam variabel tunggal. Setiap nilai (juga disebut elemen) dalam array memiliki posisi numerik, yang dikenal sebagai indeksnya, dan mungkin berisi data dari semua tipe-angka data, string, boolean, fungsi, objek, dan bahkan array lainnya. Indeks array dimulai dari 0, sehingga elemen array pertama adalah arr[0] bukan arr[1].

Cara paling sederhana untuk membuat array adalah dengan menentukan elemen array sebagai daftar yang dipisahkan koma (comma-separated) yang diapit oleh tanda kurung siku, seperti yang ditunjukkan dalam contoh di bawah ini:

var colors = ["Red", "Yellow", "Green", "Orange"];
var cities = ["London", "Paris", "New York"];
 
alert(colors[0]);   // Output: Red
alert(cities[2]);   // Output: New York
Tipe Data Function

Fungsi ini adalah objek yang dapat dipanggil yang mengeksekusi blok kode. Karena fungsi adalah objek, jadi dimungkinkan untuk menetapkannya ke variabel, seperti yang ditunjukkan pada contoh di bawah ini:

var greeting = function(){ 
    return "Hello World!"; 
}
 
// Check the type of greeting variable
alert(typeof greeting) // Output: function
alert(greeting());     // Output: Hello World!

Bahkan, fungsi dapat digunakan di sembarang tempat dimana nilai yang lainnya dapat digunakan. Fungsi dapat disimpan dalam variabel, objek, dan array. Fungsi dapat diteruskan sebagai argumen ke fungsi lain, dan fungsi dapat dikembalikan dari fungsi itu sendiri. Coba lihat fungsi berikut dibawah ini:

function createGreeting(name){
    return "Hello, " + name;
}
function displayGreeting(greetingFunction, userName){
    return greetingFunction(userName);
}
 
var result = displayGreeting(createGreeting, "Peter");
alert(result); // Output: Hello, Peter
Tipe Operator

Typeof operator dapat digunakan untuk mengetahui tipe data apa yang berisi variabel atau operand. Ini dapat digunakan dengan atau tanpa tanda kurung (typeof(x) atau typeof x).

Operator typeof sangat berguna ketika kalian perlu memproses nilai-nilai dari tipe yang berbeda secara berbeda, tetapi kalian harus sangat berhati-hati, karena hal tersebut dalam beberapa kasus mungkin akan menghasilkan hasil yang tidak terduga, seperti yang ditunjukkan dalam contoh berikut:

// Numbers
typeof 15;  // Returns: "number"
typeof 42.7;  // Returns: "number"
typeof 2.5e-4;  // Returns: "number"
typeof Infinity;  // Returns: "number"
typeof NaN;  // Returns: "number". Despite being "Not-A-Number"
 
// Strings
typeof '';  // Returns: "string"
typeof 'hello';  // Returns: "string"
typeof '12';  // Returns: "string". Number within quotes is typeof string
 
// Booleans
typeof true;  // Returns: "boolean"
typeof false;  // Returns: "boolean"
 
// Undefined
typeof undefined;  // Returns: "undefined"
typeof undeclaredVariable; // Returns: "undefined"
 
// Null
typeof Null;  // Returns: "object"
 
// Objects
typeof {name: "John", age: 18};  // Returns: "object"
 
// Arrays
typeof [1, 2, 4];  // Returns: "object"
 
// Functions
typeof function(){};  // Returns: "function"

Seperti yang kalian lihat dengan jelas dalam contoh di atas ketika kami menguji nilai nol menggunakan operator typeof (baris no-22), ia mengembalikan “objek” bukannya “null”.

Ini adalah bug lama yang sudah ada dalam JavaScript, tetapi karena banyak kode di web yang ditulis tentang pendekatan ini, dan hal tersebut akan menciptakan lebih banyak masalah, jadi ide untuk memperbaiki masalah ini ditolak oleh komite yang merancang dan mengelola JavaScript.