Tutorial JS

JS RUMAH Pengenalan JS JS Dimana Keluaran JS Pernyataan JS Sintaks JS Komentar JS Variabel JS JS Let JS Const Operator JS JS Aritmatika Tugas JS Tipe Data JS Fungsi JS Objek JS Acara JS String JS Metode String JS Pencarian String JS Template String JS Nomor JS Metode Nomor JS JS Array Metode Array JS Sortir Array JS Iterasi Array JS JS Array Const Tanggal JS Format Tanggal JS Metode Dapatkan Tanggal JS Metode Penetapan Tanggal JS JS Matematika JS Acak JS Boolean Perbandingan JS Ketentuan JS Beralih JS JS Loop Untuk JS Loop Untuk Masuk JS Loop Untuk Of JS Loop Sementara Istirahat JS JS Iterable JS Set Peta JS Tipe JS Konversi Tipe JS JS Bitwise JS RegExp Kesalahan JS Lingkup JS Pengangkatan JS Mode Ketat JS JS Kata Kunci ini Fungsi Panah JS Kelas JS JS JSON Debug JS Panduan Gaya JS Praktik Terbaik JS Kesalahan JS Kinerja JS Kata-kata Cadangan JS

Versi JS

Versi JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Tepi Sejarah JS

Objek JS

Definisi Objek Properti Objek Metode Objek Tampilan Objek Aksesor Objek Konstruktor Objek Prototipe Objek Obyek Iterable Set Objek Peta Objek Referensi Objek

Fungsi JS

Definisi Fungsi Parameter Fungsi Panggilan Fungsi Panggilan Fungsi Fungsi Terapkan Penutupan Fungsi

Kelas JS

Perkenalan Kelas Warisan Kelas Kelas Statis

JS Asinkron

Panggilan Balik JS JS Asinkron JS Janji JS Async/Menunggu

JS HTML DOM

Pengenalan DOM Metode DOM Dokumen DOM Elemen DOM HTML DOM Formulir DOM CSS DOM Animasi DOM Acara DOM Pendengar Acara DOM Navigasi DOM Node DOM Koleksi DOM Daftar Node DOM

JS Browser BOM

Jendela JS Layar JS Lokasi JS Sejarah JS JS Navigator Peringatan Munculan JS Waktu JS JS Cookies

JS Web API

Pengantar API Web API Formulir Web API Riwayat Web API Penyimpanan Web API Pekerja Web API Pengambilan Web API Geolokasi Web

JS AJAX

Pengenalan AJAX AJAX XMLHttp Permintaan AJAX Tanggapan AJAX File XML AJAX AJAX PHP AJAX ASP Basis Data AJAX Aplikasi AJAX Contoh AJAX

JS JSON

Perkenalan JSON Sintaks JSON JSON vs XML Tipe Data JSON Penguraian JSON Stringify JSON Objek JSON Array JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Pemilih jQuery jQuery HTML jQuery CSS jQuery DOM

Grafik JS

Grafik JS JS Kanvas JS Plotly JS Chart.js Bagan Google JS JS D3.js

Contoh JS

Contoh JS JS HTML DOM Masukan HTML JS Objek HTML JS Acara HTML JS JS Browser Editor JS Latihan JS kuis JS Sertifikat JS

Referensi JS

Objek JavaScript Objek DOM HTML


Penggunaan JavaScript Ketat


"use strict";Mendefinisikan bahwa kode JavaScript harus dijalankan dalam "mode ketat".


Arahan "gunakan ketat"

Arahan "use strict"baru di ECMAScript versi 5.

Ini bukan pernyataan, tetapi ekspresi literal, diabaikan oleh versi JavaScript sebelumnya.

Tujuannya "use strict"adalah untuk menunjukkan bahwa kode harus dijalankan dalam "mode ketat".

Dengan mode ketat, Anda tidak dapat, misalnya, menggunakan variabel yang tidak dideklarasikan.

Semua browser modern mendukung "gunakan ketat" kecuali Internet Explorer 9 dan yang lebih rendah:

Directive
"use strict" 13.0 10.0 4.0 6.0 12.1

Angka-angka dalam tabel menentukan versi browser pertama yang sepenuhnya mendukung direktif.

Anda dapat menggunakan mode ketat di semua program Anda. Ini membantu Anda menulis kode yang lebih bersih, seperti mencegah Anda menggunakan variabel yang tidak dideklarasikan.

"use strict" hanyalah sebuah string, jadi IE 9 tidak akan membuat kesalahan meskipun tidak memahaminya.


Mendeklarasikan Mode Ketat

Mode ketat dideklarasikan dengan menambahkan "gunakan ketat"; ke awal skrip atau fungsi.

Dideklarasikan di awal skrip, ia memiliki cakupan global (semua kode dalam skrip akan dijalankan dalam mode ketat):

Contoh

"use strict";
x = 3.14;       // This will cause an error because x is not declared

Contoh

"use strict";
myFunction();

function myFunction() {
  y = 3.14;   // This will also cause an error because y is not declared
}

Dideklarasikan di dalam suatu fungsi, ia memiliki cakupan lokal (hanya kode di dalam fungsi yang berada dalam mode ketat):

x = 3.14;       // This will not cause an error.
myFunction();

function myFunction() {
  "use strict";
  y = 3.14;   // This will cause an error
}


"Gunakan ketat"; Sintaksis

Sintaksnya, untuk mendeklarasikan mode ketat, dirancang agar kompatibel dengan versi JavaScript yang lebih lama.

Mengkompilasi literal numerik (4 + 5;) atau string literal ("John Doe";) dalam program JavaScript tidak memiliki efek samping. Itu hanya mengkompilasi ke variabel yang tidak ada dan mati.

Jadi "use strict";hanya penting bagi kompiler baru yang "memahami" artinya.


Mengapa Mode Ketat?

Mode ketat memudahkan penulisan JavaScript "aman".

Mode ketat mengubah "sintaks buruk" yang diterima sebelumnya menjadi kesalahan nyata.

Sebagai contoh, dalam JavaScript normal, salah ketik nama variabel akan membuat variabel global baru. Dalam mode ketat, ini akan menimbulkan kesalahan, sehingga tidak mungkin membuat variabel global secara tidak sengaja.

Dalam JavaScript normal, pengembang tidak akan menerima umpan balik kesalahan yang menetapkan nilai ke properti yang tidak dapat ditulis.

Dalam mode ketat, setiap penugasan ke properti yang tidak dapat ditulis, properti getter-only, properti yang tidak ada, variabel yang tidak ada, atau objek yang tidak ada, akan menimbulkan kesalahan.


Tidak Diizinkan dalam Mode Ketat

Menggunakan variabel, tanpa mendeklarasikannya, tidak diperbolehkan:

"use strict";
x = 3.14;                // This will cause an error

Objek juga variabel.

Menggunakan objek, tanpa mendeklarasikannya, tidak diperbolehkan:

"use strict";
x = {p1:10, p2:20};      // This will cause an error

Menghapus variabel (atau objek) tidak diperbolehkan.

"use strict";
let x = 3.14;
delete x;                // This will cause an error

Menghapus fungsi tidak diperbolehkan.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

Menduplikasi nama parameter tidak diperbolehkan:

"use strict";
function x(p1, p1) {};   // This will cause an error

Literal numerik oktal tidak diperbolehkan:

"use strict";
let x = 010;             // This will cause an error

Karakter escape oktal tidak diperbolehkan:

"use strict";
let x = "\010";            // This will cause an error

Menulis ke properti hanya-baca tidak diperbolehkan:

"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

Menulis ke properti get-only tidak diperbolehkan:

"use strict";
const obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

Menghapus properti yang tidak dapat dihapus tidak diperbolehkan:

"use strict";
delete Object.prototype; // This will cause an error

Kata evaltidak dapat digunakan sebagai variabel:

"use strict";
let eval = 3.14;         // This will cause an error

Kata argumentstidak dapat digunakan sebagai variabel:

"use strict";
let arguments = 3.14;    // This will cause an error

Pernyataan withtidak diperbolehkan:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

Untuk alasan keamanan, eval()tidak diperbolehkan membuat variabel dalam lingkup dari mana ia dipanggil:

"use strict";
eval ("let x = 2");
alert (x);             // This will cause an error

Kata thiskunci dalam fungsi berperilaku berbeda dalam mode ketat.

Kata thiskunci mengacu pada objek yang disebut fungsi.

Jika objek tidak ditentukan, fungsi dalam mode ketat akan kembali undefineddan fungsi dalam mode normal akan mengembalikan objek global (jendela):

"use strict";
function myFunction() {
  alert(this); // will alert "undefined"
}
myFunction();


Bukti masa depan!

Kata kunci yang dicadangkan untuk versi JavaScript mendatang TIDAK dapat digunakan sebagai nama variabel dalam mode ketat.

Ini adalah:

  • mengimplementasikan
  • antarmuka
  • membiarkan
  • kemasan
  • pribadi
  • terlindung
  • publik
  • statis
  • menghasilkan
"use strict";
let public = 1500;      // This will cause an error

Awas!

Arahan "gunakan ketat" hanya dikenali di awal skrip atau fungsi.