Coder Social home page Coder Social logo

javascript's Introduction

Javasript

Content Navigation

TOC

Node.js?

Node.js is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser. Node.js lets developers use JavaScript to write command line tools and for server-side scripting—running scripts server-side to produce dynamic web page content before the page is sent to the user's web browser. Consequently, Node.js represents a "JavaScript everywhere" paradigm, unifying web-application development around a single programming language, rather than different languages for server-side and client-side scripts.

Intinya, Node.js itu bisa membuat script js bisa di run selain di browser (CLI, Server, dsb). Sekarang kita gak bakal bahas itu.

How to get help && How to help yourself

Docs

MDN - https://developer.mozilla.org/en-US/docs/ (good)

Kadang kalo kita cari sesuatu di w3school itu gak detail, contohnya kurang, dsb. Kalo di MDN semua lebih jelas dan bahkan bakal ada live preview-nya.

Cara baca documentation syntax definition

Browser Console && console.log("disini")

Masalah paling sering muncul ketika ngoding in general adalah "kenapa ini gak jalan". Di javascript kita bisa dengan mudah melakukan debugging karena fungsi console.log ini, dan ketika kalo memang ada sesuatu yang tidak diinginkan terjadi kita bisa langsung cek di Browser console, disitu harusnya bakal ada error apa yang terjadi (kecuali logical error). Selain console.log, javascript juga method console lain seperti console.table, console.info, console.warn, console.time

Contoh error: Contoh error Output console: output console

Read more di sini

How to run

As a Script

Javascript (seperti kodrat nya) bisa dijalankan di browser, untuk file extensi nya itu bisa di .js, .mjs, atau script tag di .html.

Browser Console

Chrome Based - CTRL+SHIFT+J

Firefox Based - CTRL+SHIFT+K

Node.js REPL

$ node

$ node [filename]

First-class function

Javascript merupakan bahasa yang menerapkan first-class function yang dimana artinya sebuah function diperlakukan sama dengan variable. Jadi didalam javacript, sebuah function itu bisa dijadikan: argument, return value, dan value dari variable lain.

Contoh:

const m42nk = function() {
   console.log("geming");
}
m42nk(); // geming
function sayGeming() {
   return "geming, ";
}
function greeting(gemingMessage, name) {
  console.log(sayGeming() + name);
}
greeting(sayGeming, "m42nk!"); // Hello, m42nk!
function sayGeming() {
   return function() {
      console.log("GeEmiNg!");
   }
}
sayGeming()(); // GeEmiNg! 

Semicolons

Di javascript itu bebas mau dikasih semicolon (titik koma) atau engga di akhir setiap statement, kecuali di beberapa keadaan (iife)

const nama_asli = "Syakhisk"; // bisa

const nama_panggung = "m42nk" // boleh

Variables && Scopes

var? let? const?

Di javascript, ada 3 cara untuk membuat variable, yaitu pake var, let, atau const. Masing-masing cara punya perbedaan.

var

Declares a variable, optionally initializing it to a value.

let

Declares a block-scoped, local variable, optionally initializing it to a value.

const

Declares a block-scoped, read-only named constant.

Read more di sini dan di situ

Functions

Usage

Cara mendeklarasikan function di javascript ini mirip dengan kebanyakan bahasa lain, tapi ada beberapa yang buat unik.

// Biasa - function declaration
function geming(){
  console.log("halo")
}

// Anonymous (untuk callback, argument, atau iife)
function (){
  console.log("aku gapunya nama")
}

// Taro di variable - function expression
const password = function () {
  return "verysecret123andri"
}

password() // verysecret123andri

Arrow Function

const sixninefortwenty = () => "nice" // nice

// Artinya sama kaya
const sixninefortwenty = function() {
  return "nice"
}  

console.log(sixninefortwenty()) // nice

// Atau
const sebutNamakuTigaKali = (nama) => {
  for(let i = 0; i < 3; i++){
    console.log(nama)
  }
}

sebutNamakuTigaKali("andri") 
// andri
// andri
// andri

Arguments && Parameters

Default value

Default value dari argument (parameter) akan digunakan apabila argument tersebut tidak diberikan pada saat pemanggilan function.

Contoh:

const tambahinDong = (val1, val2 = 0) => val1 + val2;

const x = tambahinDong(99) // 99
const y = tambahinDong(99, 321) // 420

Rest Parameters - variadic funcitons

Jadi sebuah function dapat memiliki jumlah variable yang indefinite dengan cara menggunakan triple-dots atau ..., dimana nanti akan disimpan sebagai array didalam scope function tersebut.

Contoh:

function numbah(...num){
 console.log(num)
}

numbah(68,419,0) // [ 68, 419, 0 ]

Read more di sini

Kita juga bisa menjadikan semua tipe variable sebagai arguments (object, function, number, etc).

Contoh:

// Array
function tambahinDong(arr){
  let sum = 0;
  
  for(let i; i < arr.length; i++) {
    sum += arr[i]
  }
  
  return sum
  
  // atau cara magic (sama-sama jumlahin semua value)
  // return arr.reduce((prev, current) => prev + current);
}

const nilaiku = [6, 5, 3, 7, 1, 0]

console.log(tambahinDong(nilaiku)) // 22 (gak lulus 😢)

Objects

JavaScript is designed on a simple object-based paradigm. An object is a collection of properties, and a property is an association between a name (or key) and a value. A property's value can be a function, in which case the property is known as a method.

Intinya, object dalam javascript itu sebuah koleksi yang isinya key-value pair. Mungkin di python ini bisa disebut dictionary, dan di php disebut associative array.

Usage

// definition and assignment
const mhs = new Object();
mhs.nama_depan = "Lorem"
mhs.nama_belakang = "Ipsum"
mhs.nrp = "05312140000001"
mhs.getNama = function () {
  // pakai template string, diawali pake backtick (`)
  // bisa akses js expression dengan cara 
  // pake ${expression}
  return `${this.nama_depan} ${this.nama_belakang}`
}

console.log(mhs.getNama()) // Lorem Ipsum

// shorthand

const mhs = {
  nama_depan: "Lorem",
  nama_belakang: "Ipsum",
  nrp: "05312140000001",
  getNamaArrow: () => `${this.nama_depan} ${this.nama_belakang}`,
  getNama: function() {
      return `${this.nama_depan} ${this.nama_belakang}`
    } 
}

console.log(mhs.nama_depan) // Lorem
console.log(mhs["nama_belakang"]) // Ipsum
console.log(mhs.getNamaArrow()) // undefined undefined
console.log(mhs.getNama()) // Lorem Ipsum

Array

Seperti pada umumnya, array merupakan sebuah object yang mirip seperti list yang biasa kita akses menggunakan index arr[0], arr[1], etc.

Javascript menerapkan zero-based indexing yang artinya index dari array dimulai dari 0. Array di javascript juga tidak memiliki fixed-length, dan tidak mengharuskan semua elemen di dalamnya memiliki tipe data yang sama.

Usage

const arr1 = [] // deklarasi
const arr2 = [1,2,3] // deklarasi + inisialisasi
const arr3 = new Array() // menggunakan kelas array

const arr4 = [
  1, 
  "dua", 
  3.0, 
  {num: 4}, 
  function(){return 5},
  () => 6,
  [7],
]; // elemen berbeda tipe

Methods

Methods dari class array ini lumayan banyak, salah satu method yang biasa digunakan itu: push, pop, map, filter, reduce, find, includes, join, dsb.

Contoh:

const arr = [10, 9];
arr.push(2); // arr = [10, 9, 2] -- menambahkan elemen kedalam array

const val1 = arr.pop(); // val1 = 2, arr = [10, 9] -- mengeluarkan elemen terakhir

const val2 = arr.shift(); // val2 = 10, arr = [9] -- mengeluarkan elemen pertama

// filter dan map akan mereturn array baru tanpa mengubah array asli
const arr2 = [1,2,3,4,5]
const genap = arr.filter((num) => num % 2) // genap = [2,4]
const tambah10 = arr.map((num) => num + 10 ) // tambah10 = [11,12,13,14,15]
console.log(arr2) // [1,2,3,4,5]

const nama = ["lorem", "ipsum"];
console.log(nama.join()) // "lorem,ipsum"
console.log(nama.join(" ")) // "lorem ipsum"

Read more di sini

Destructuring

The destructuring assignment syntax is a JavaScript expression that makes it possible to unpack values from arrays, or properties from objects, into distinct variables.

Intinya, destructuring itu bisa "mengekspos" isi dari sesuatu (object/array) menjadi variable sendiri.

Contoh:

// array destructuring, sesuai index
const nama = ["lorem", "ipsum"]
const [namaDepan, namaBelakang] = nama

console.log(namaDepan) // "lorem"
console.log(namaBelakang) // "ipsum"

// object destructuring, sesuai key
const mhs = {
  nama = "foobar",
  password = "verysecret123andri"
  nrp = "05311940000003"
}

const {nama, nrp} = mhs;

console.log(nama) // "foobar"
console.log(nrp) // "05311940000003"


// rest assignment
const halo = ["halo", "bandung", "ibu", "kota"]
const [kata_pertama, ...kata_sisanya] = halo

console.log(kata_pertama) // "halo" -- string
console.log(kata_sisanya) // ["bandung", "ibu", "kota"] -- array

Read more di sini

Equality

Semakin kalian belajar javascript semakin kalian tau seberapa aneh equality di dalamnya. Tapi sekarang, intinya yang paling sering bikin bingung itu perbedaan == dengan ===. triple-equal artinya strict-equality dimana tipe data dari value yang dibandingkan harus sama.

Contoh:

// equality
console.log(1 == 1) // true
console.log(1 == "1") // true
console.log(1 == true) // true
console.log(0 == false) // true

console.log(1 === 1) // true
console.log(1 === "1") // false
console.log(1 === true) // false
console.log(0 === false) // false

Bonus

For loop di javascript

// array
const arr = [1,3,5,7,9]

// cara umum
for (let i = 0; i < arr.length; i++){
  console.log(`Nilai adalah ${arr[i]}`)
}

// cara for of
for(let i of arr){
  console.log(`${i} adalah elemen dalam array`)
}

// output
// 1 adalah elemen dalam array
// 2 adalah elemen dalam array
// ...


// cara for of
for(let i in arr){
  console.log(`${i} adalah index dalam array`)
}

// output
// 0 adalah index dalam array
// 1 adalah index dalam array
// ...


// object

const mhs = {
  nama: "Lorem Ipsum",
  nrp: "05311940000003",
  email: "[email protected]",
}

// salah -- mhs is not iterable
for (let i of mhs){
  console.log(i)
}

for (let i in mhs){
  console.log(i + " dari mhs adalah " + mhs[i])
}

// output
// nama dari mhs adalah Lorem Ipsum
// nrp dari mhs adalah 05311940000003
// email dari mhs adalah [email protected]

Notes

Feel free to submit an issue if there are any incorrect information here.

References

https://developer.mozilla.org/en-US/docs/

https://learnxinyminutes.com/docs/javascript/

https://hackernoon.com/js-var-let-or-const-67e51dbb716f

https://en.wikipedia.org/wiki/Node.js

javascript's People

Contributors

syakhisk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.