Apa jawaban panjang javascript?

Ini mungkin terdengar sepele dan, sebenarnya, sepele dengan ECMAscript 6 yang memperkenalkan fungsi Number.isInteger() baru untuk tujuan ini secara tepat. Namun, sebelum ECMAScript 6, ini sedikit lebih rumit, karena tidak ada yang setara dengan metode Number.isInteger() yang disediakan

Masalahnya adalah, dalam spesifikasi ECMAScript, bilangan bulat hanya ada secara konseptual; . e. , nilai numerik selalu disimpan sebagai nilai floating point

Dengan mengingat hal itu, solusi pra-ECMAScript-6 yang paling sederhana dan bersih (yang juga cukup kuat untuk mengembalikan false bahkan jika nilai non-numerik seperti string atau

function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
0 diteruskan ke fungsi) akan menjadi penggunaan berikut dari

function isInteger(x) { return (x ^ 0) === x; } 
_

Solusi berikut juga akan berfungsi, meskipun tidak seanggun yang di atas

function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }

Fungsi berikut (atau dengan

function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
_1 atau
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
2 menggantikan
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
3) mungkin juga tampak berguna, tetapi hasilnya tidak persis sama dengan dua fungsi di atas

function isInteger(x) { return Math.round(x) === x; }
_

Perbedaannya adalah, solusi berbasis

function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
4 ini mengembalikan
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
5 untuk
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
6 dan
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
7, sedangkan yang lain (dan khususnya Number.isInteger() ES6) mengembalikan false

Solusi salah yang cukup umum lainnya adalah sebagai berikut

function isInteger(x) { return parseInt(x, 10) === x; }

Sementara pendekatan berbasis

function isInteger(x) { return Math.round(x) === x; }
_0 ini akan bekerja dengan baik untuk banyak nilai
function isInteger(x) { return Math.round(x) === x; }
1, sekali
function isInteger(x) { return Math.round(x) === x; }
1 menjadi cukup besar, itu akan gagal bekerja dengan baik. Masalahnya adalah
function isInteger(x) { return Math.round(x) === x; }
3 memaksa parameter pertamanya menjadi string sebelum mem-parsing digit. Oleh karena itu, setelah jumlahnya menjadi cukup besar, representasi stringnya akan disajikan dalam bentuk eksponensial (mis. g. ,
function isInteger(x) { return Math.round(x) === x; }
_4). Dengan demikian,
function isInteger(x) { return Math.round(x) === x; }
_3 kemudian akan mencoba mengurai
function isInteger(x) { return Math.round(x) === x; }
4, tetapi akan berhenti mengurai ketika mencapai
function isInteger(x) { return Math.round(x) === x; }
7 karakter dan karena itu akan mengembalikan nilai
function isInteger(x) { return Math.round(x) === x; }
8. Mengamati

JavaScript adalah bahasa yang dikompilasi tingkat tinggi, seringkali tepat waktu yang sesuai dengan standar ECMAScript. Ini memiliki pengetikan dinamis, orientasi objek berbasis prototipe, dan fungsi kelas satu. Ini adalah multi-paradigma, mendukung gaya pemrograman yang digerakkan oleh peristiwa, fungsional, dan imperatif. Ini memiliki antarmuka pemrograman aplikasi (API) untuk bekerja dengan teks, tanggal, ekspresi reguler, struktur data standar, dan Model Objek Dokumen (DOM)

Standar ECMAScript tidak menyertakan input/output (I/O) apa pun, seperti jaringan, penyimpanan, atau fasilitas grafis. Dalam praktiknya, browser web atau sistem waktu proses lainnya menyediakan JavaScript API untuk I/O

Mesin JavaScript pada awalnya hanya digunakan di browser web, tetapi sekarang menjadi komponen inti dari beberapa server dan berbagai aplikasi. Sistem runtime paling populer untuk penggunaan ini adalah Node. js

Meskipun Java dan JavaScript serupa dalam nama, sintaks, dan pustaka standar masing-masing, kedua bahasa ini berbeda dan sangat berbeda dalam desain

Sejarah

Pembuatan di Netscape

Peramban web populer pertama dengan antarmuka pengguna grafis, Mosaic, dirilis pada tahun 1993. Dapat diakses oleh orang non-teknis, ini memainkan peran penting dalam pertumbuhan pesat World Wide Web yang baru lahir. Pengembang utama Mosaic kemudian mendirikan perusahaan Netscape, yang merilis browser yang lebih halus, Netscape Navigator, pada tahun 1994. Ini dengan cepat menjadi yang paling banyak digunakan

Selama tahun-tahun pembentukan Web ini, halaman web hanya bisa statis, tidak memiliki kemampuan untuk perilaku dinamis setelah halaman dimuat di browser. Ada keinginan di kancah pengembangan web yang berkembang pesat untuk menghilangkan batasan ini, jadi pada tahun 1995, Netscape memutuskan untuk menambahkan bahasa scripting ke Navigator. Mereka menempuh dua rute untuk mencapai hal ini. berkolaborasi dengan Sun Microsystems untuk menyematkan bahasa pemrograman Java, sekaligus mempekerjakan Brendan Eich untuk menyematkan bahasa Skema

Manajemen Netscape segera memutuskan bahwa pilihan terbaik bagi Eich adalah merancang bahasa baru, dengan sintaks yang mirip dengan Java dan kurang seperti Skema atau bahasa skrip lain yang masih ada. Meskipun bahasa baru dan penerapan juru bahasanya disebut LiveScript saat pertama kali dikirimkan sebagai bagian dari Navigator beta pada bulan September 1995, namanya diubah menjadi JavaScript untuk rilis resmi pada bulan Desember

Pemilihan nama JavaScript telah menimbulkan kebingungan, menyiratkan bahwa itu terkait langsung dengan Java. Pada saat itu, ledakan dot-com telah dimulai dan Java adalah bahasa baru yang populer, jadi Eich menganggap nama JavaScript sebagai taktik pemasaran oleh Netscape.

Adopsi oleh Microsoft

Microsoft memulai debutnya Internet Explorer pada tahun 1995, yang menyebabkan perang browser dengan Netscape. Di depan JavaScript, Microsoft merekayasa ulang juru bahasa Navigator untuk membuatnya sendiri, yang disebut JScript

JScript pertama kali dirilis pada tahun 1996, bersamaan dengan dukungan awal untuk CSS dan ekstensi ke HTML. Masing-masing implementasi ini sangat berbeda dari rekan-rekan mereka di Navigator. Perbedaan-perbedaan ini mempersulit pengembang untuk membuat situs web mereka bekerja dengan baik di kedua browser, yang menyebabkan penggunaan logo "terbaik dilihat di Netscape" dan "terbaik dilihat di Internet Explorer" secara luas selama beberapa tahun.

Munculnya JScript

Pada bulan November 1996, Netscape mengirimkan JavaScript ke Ecma International, sebagai titik awal untuk spesifikasi standar yang dapat disesuaikan oleh semua vendor browser. Hal ini menyebabkan rilis resmi dari spesifikasi bahasa ECMAScript pertama pada bulan Juni 1997

Proses standar berlanjut selama beberapa tahun, dengan dirilisnya ECMAScript 2 pada Juni 1998 dan ECMAScript 3 pada Desember 1999. Bekerja pada ECMAScript 4 dimulai pada tahun 2000

Sementara itu, Microsoft memperoleh posisi yang semakin dominan di pasar browser. Pada awal 2000-an, pangsa pasar Internet Explorer mencapai 95%. Ini berarti JScript menjadi standar de facto untuk skrip sisi klien di Web

Microsoft awalnya berpartisipasi dalam proses standar dan mengimplementasikan beberapa proposal dalam bahasa JScript-nya, tetapi akhirnya berhenti berkolaborasi dalam pekerjaan Ecma. Jadi ECMAScript 4 dihentikan

Pertumbuhan dan standardisasi

Selama periode dominasi Internet Explorer di awal tahun 2000-an, skrip sisi klien mengalami stagnasi. Ini mulai berubah pada tahun 2004, ketika penerus Netscape, Mozilla, merilis browser Firefox. Firefox diterima dengan baik oleh banyak orang, mengambil pangsa pasar yang signifikan dari Internet Explorer

Pada tahun 2005, Mozilla bergabung dengan ECMA International, dan pekerjaan dimulai pada standar ECMAScript for XML (E4X). Hal ini menyebabkan Mozilla bekerja sama dengan Macromedia (kemudian diakuisisi oleh Adobe Systems), yang mengimplementasikan E4X dalam bahasa ActionScript 3 mereka, yang didasarkan pada draf ECMAScript 4. Tujuannya menjadi standardisasi ActionScript 3 sebagai ECMAScript 4 baru. Untuk tujuan ini, Adobe Systems merilis implementasi Tamarin sebagai proyek open source. Namun, Tamarin dan ActionScript 3 terlalu berbeda dari pembuatan skrip sisi klien, dan tanpa kerja sama dari Microsoft, ECMAScript 4 tidak pernah membuahkan hasil.

Sementara itu, perkembangan yang sangat penting terjadi di komunitas open-source yang tidak berafiliasi dengan pekerjaan ECMA. Pada tahun 2005, Jesse James Garrett merilis kertas putih di mana ia menciptakan istilah Ajax dan menggambarkan seperangkat teknologi, yang JavaScript adalah tulang punggungnya, untuk membuat aplikasi web di mana data dapat dimuat di latar belakang, menghindari kebutuhan halaman penuh. . Ini memicu periode kebangkitan JavaScript, dipelopori oleh perpustakaan sumber terbuka dan komunitas yang terbentuk di sekitarnya. Banyak perpustakaan baru dibuat, termasuk jQuery, Prototype, Dojo Toolkit, dan MooTools

Google memulai debutnya browser Chrome pada tahun 2008, dengan mesin JavaScript V8 yang lebih cepat dari para pesaingnya. Inovasi utama adalah kompilasi just-in-time (JIT), jadi vendor browser lain perlu merombak mesin mereka untuk JIT

Pada bulan Juli 2008, pihak-pihak yang berbeda ini berkumpul untuk sebuah konferensi di Oslo. Hal ini menyebabkan kesepakatan akhirnya pada awal 2009 untuk menggabungkan semua pekerjaan yang relevan dan memajukan bahasa. Hasilnya adalah standar ECMAScript 5, dirilis pada Desember 2009

Mencapai kedewasaan

Pekerjaan ambisius pada bahasa ini berlanjut selama beberapa tahun, yang berpuncak pada kumpulan ekstensif penambahan dan penyempurnaan yang diformalkan dengan publikasi ECMAScript 6 pada tahun 2015

Pembuatan Node. js pada tahun 2009 oleh Ryan Dahl memicu peningkatan signifikan dalam penggunaan JavaScript di luar browser web. Node menggabungkan mesin V8, event loop, dan I/O API, sehingga menyediakan sistem runtime JavaScript yang berdiri sendiri. Pada 2018, Node telah digunakan oleh jutaan pengembang, dan npm memiliki modul paling banyak dari pengelola paket mana pun di dunia

Spesifikasi draf ECMAScript saat ini dikelola secara terbuka di GitHub, dan edisi diproduksi melalui snapshot tahunan reguler. Potensi revisi bahasa diperiksa melalui proses proposal yang komprehensif. Sekarang, alih-alih nomor edisi, pengembang memeriksa status fitur yang akan datang satu per satu

Ekosistem JavaScript saat ini memiliki banyak pustaka dan kerangka kerja, praktik pemrograman yang mapan, dan penggunaan JavaScript yang substansial di luar browser web. Plus, dengan munculnya aplikasi satu halaman dan situs web berat JavaScript lainnya, beberapa transpiler telah dibuat untuk membantu proses pengembangan

Merek dagang

"JavaScript" adalah merek dagang dari Oracle Corporation di Amerika Serikat. Merek dagang tersebut awalnya dikeluarkan untuk Sun Microsystems pada 6 Mei 1997, dan dipindahkan ke Oracle ketika mereka mengakuisisi Sun pada 2009.

Penggunaan sisi klien situs web

JavaScript adalah bahasa skrip sisi klien yang dominan di Web, dengan 98% dari semua situs web (pertengahan 2022) menggunakannya untuk tujuan ini. Skrip disematkan atau disertakan dari dokumen HTML dan berinteraksi dengan DOM. Semua browser web utama memiliki mesin JavaScript bawaan yang mengeksekusi kode di perangkat pengguna

Contoh perilaku tertulis

Perpustakaan dan kerangka kerja

Lebih dari 80% situs web menggunakan pustaka JavaScript pihak ketiga atau kerangka kerja web untuk skrip sisi klien mereka

jQuery sejauh ini merupakan perpustakaan paling populer, digunakan oleh lebih dari 75% situs web. Facebook membuat perpustakaan Bereaksi untuk situs webnya dan kemudian merilisnya sebagai sumber terbuka; . Demikian pula, kerangka kerja Angular yang dibuat oleh Google untuk situs webnya, termasuk YouTube dan Gmail, kini menjadi proyek sumber terbuka yang digunakan oleh orang lain

Sebaliknya, istilah "Vanilla JS" telah diciptakan untuk situs web yang tidak menggunakan pustaka atau kerangka kerja apa pun, alih-alih sepenuhnya mengandalkan fungsionalitas JavaScript standar

Penggunaan lainnya

Penggunaan JavaScript telah berkembang melampaui akar browser webnya. Mesin JavaScript sekarang disematkan di berbagai sistem perangkat lunak lain, baik untuk penerapan situs web sisi server maupun aplikasi non-browser

Upaya awal untuk mempromosikan penggunaan JavaScript sisi-server adalah Netscape Enterprise Server dan Microsoft's Internet Information Services, tetapi mereka hanya ceruk kecil. Penggunaan sisi server akhirnya mulai berkembang di akhir tahun 2000-an, dengan dibuatnya Node. js dan pendekatan lainnya

Electron, Cordova, React Native, dan framework aplikasi lainnya telah digunakan untuk membuat banyak aplikasi dengan perilaku yang diimplementasikan dalam JavaScript. Aplikasi non-browser lainnya termasuk dukungan Adobe Acrobat untuk membuat skrip dokumen PDF dan ekstensi GNOME Shell yang ditulis dalam JavaScript

JavaScript baru-baru ini mulai muncul di beberapa sistem tertanam, biasanya dengan memanfaatkan Node.js. js

Fitur

Fitur berikut adalah umum untuk semua implementasi ECMAScript yang sesuai kecuali secara eksplisit ditentukan sebaliknya

Imperatif dan terstruktur

JavaScript mendukung banyak sintaks pemrograman terstruktur dari C (mis. g. , if pernyataan, while loop, switch pernyataan, do while loop, dll. ). Satu pengecualian parsial adalah pelingkupan. awalnya JavaScript hanya memiliki pelingkupan fungsi dengan var; . Seperti C, JavaScript membuat perbedaan antara ekspresi dan pernyataan. Satu perbedaan sintaksis dari C adalah penyisipan titik koma otomatis, yang memungkinkan titik koma (yang mengakhiri pernyataan) dihilangkan

Diketik dengan lemah

JavaScript diketik dengan lemah, yang berarti jenis tertentu dilemparkan secara implisit tergantung pada operasi yang digunakan

  • Operator biner + melemparkan kedua operan ke string kecuali kedua operan adalah angka. Ini karena operator penjumlahan berfungsi ganda sebagai operator gabungan
  • Operator biner - selalu mentransmisikan kedua operan ke sebuah angka
  • Kedua operator unary (+, -) selalu mentransmisikan operan ke nomor

Nilai dilemparkan ke string seperti berikut

  • String dibiarkan apa adanya
  • Angka dikonversi ke representasi string mereka
  • Array memiliki elemen yang dilemparkan ke string setelah itu digabungkan dengan koma (while1)
  • Objek lain dikonversi menjadi string while2 di mana while3 adalah nama konstruktor objek

Nilai dilemparkan ke angka dengan mentransmisikan ke string dan kemudian mentransmisikan string ke angka. Proses ini dapat dimodifikasi dengan mendefinisikan fungsi while_4 dan while5 masing-masing pada for string dan number casting

JavaScript telah menerima kritik atas caranya mengimplementasikan konversi ini karena kerumitan aturan dapat disalahartikan sebagai ketidakkonsistenan. Misalnya, saat menambahkan angka ke string, angka tersebut akan dilemparkan ke string sebelum melakukan penggabungan, tetapi saat mengurangkan angka dari string, string dilemparkan ke angka sebelum melakukan pengurangan.

JavaScript type conversionsleft operandoperatorright operandresultwhile6 (empty array)+while6 (empty array)while9 (empty string)while6 (empty array)+switch2 (empty object)switch3 (string)switch4 (boolean)+while6 (empty array)switch7 (string)switch8(string)

Sering juga disebutkan adalah var_0 menghasilkan var1 (angka). Ini menyesatkan. switch_2 ditafsirkan sebagai blok kode kosong alih-alih objek kosong, dan larik kosong dilemparkan ke nomor oleh operator + unary yang tersisa. Jika Anda membungkus ekspresi dalam tanda kurung var4 kurung kurawal ditafsirkan sebagai objek kosong dan hasil ekspresi adalah switch3 seperti yang diharapkan

Dinamis

Mengetik JavaScript diketik secara dinamis seperti kebanyakan bahasa skrip lainnya. Tipe dikaitkan dengan nilai daripada ekspresi. Misalnya, variabel yang awalnya terikat pada angka dapat dipindahkan ke string. JavaScript mendukung berbagai cara untuk menguji tipe objek, termasuk pengetikan bebek. Evaluasi run-timeJavaScript menyertakan fungsi var6 yang dapat mengeksekusi pernyataan yang diberikan sebagai string saat run-time

Orientasi objek (berbasis prototipe)

Warisan prototipe dalam JavaScript dijelaskan oleh Douglas Crockford sebagai

Anda membuat objek prototipe, lalu. membuat contoh baru. Objek bisa berubah dalam JavaScript, jadi kita bisa menambah instance baru, memberi mereka bidang dan metode baru. Ini kemudian dapat bertindak sebagai prototipe untuk objek yang lebih baru. Kami tidak membutuhkan kelas untuk membuat banyak objek serupa. Objek mewarisi dari objek. Apa yang bisa lebih berorientasi objek dari itu?

Dalam JavaScript, objek adalah larik asosiatif, ditambah dengan prototipe (lihat di bawah); . notasi titik (var_7) dan notasi braket (var8). Sebuah properti dapat ditambahkan, rebound, atau dihapus saat run-time. Sebagian besar properti objek (dan properti apa pun yang termasuk dalam rantai pewarisan prototipe objek) dapat dihitung menggunakan var9 loop

PrototipeJavaScript menggunakan prototipe di mana banyak bahasa berorientasi objek lainnya menggunakan kelas untuk pewarisan. Dimungkinkan untuk mensimulasikan banyak fitur berbasis kelas dengan prototipe dalam JavaScript. Fungsi sebagai konstruktor objekFungsi berfungsi ganda sebagai konstruktor objek, bersama dengan peran tipikalnya. Mengawali pemanggilan fungsi dengan new akan membuat instance prototipe, mewarisi properti dan metode dari konstruktor (termasuk properti dari prototipe while3). ECMAScript 5 menawarkan metode let1, memungkinkan pembuatan instance secara eksplisit tanpa secara otomatis mewarisi dari prototipe while3 (lingkungan yang lebih lama dapat menetapkan prototipe ke let3). Properti let_4 konstruktor menentukan objek yang digunakan untuk prototipe internal objek baru. Metode baru dapat ditambahkan dengan memodifikasi prototipe fungsi yang digunakan sebagai konstruktor. Konstruktor bawaan JavaScript, seperti let5 atau while3, juga memiliki prototipe yang dapat dimodifikasi. Meskipun dimungkinkan untuk memodifikasi prototipe while_3, ini umumnya dianggap praktik buruk karena sebagian besar objek dalam JavaScript akan mewarisi metode dan properti dari prototipe while3, dan mereka mungkin tidak mengharapkan prototipe untuk dimodifikasi. Fungsi sebagai metode Tidak seperti banyak bahasa berorientasi objek, tidak ada perbedaan antara definisi fungsi dan definisi metode. Sebaliknya, perbedaan terjadi selama pemanggilan fungsi. ketika suatu fungsi dipanggil sebagai metode suatu objek, kata kunci lokal fungsi this terikat ke objek itu untuk pemanggilan itu

Fungsional

Fungsi JavaScript kelas satu; . Dengan demikian, suatu fungsi dapat memiliki properti dan metode, seperti let9 dan const0. Fungsi bersarang adalah fungsi yang didefinisikan dalam fungsi lain. Itu dibuat setiap kali fungsi luar dipanggil. Selain itu, setiap fungsi bersarang membentuk penutupan leksikal. the dari fungsi luar (termasuk konstanta, variabel lokal, atau nilai argumen) menjadi bagian dari keadaan internal setiap objek fungsi dalam, bahkan setelah eksekusi fungsi luar selesai. JavaScript juga mendukung fungsi anonim

Apa itu jawaban JavaScript?

JavaScript adalah bahasa pemrograman ringan yang ditafsirkan dengan kemampuan berorientasi objek yang memungkinkan Anda membangun interaktivitas ke dalam halaman HTML statis . Inti tujuan umum dari bahasa ini telah disematkan di Netscape, Internet Explorer, dan browser web lainnya.

Apa itu JavaScript dengan kata-kata Anda sendiri?

JavaScript adalah bahasa pemrograman dinamis yang digunakan untuk pengembangan web, dalam aplikasi web, untuk pengembangan game, dan banyak lagi . Ini memungkinkan Anda untuk menerapkan fitur dinamis pada halaman web yang tidak dapat dilakukan hanya dengan HTML dan CSS.

Apa definisi dasar JavaScript?

JavaScript adalah bahasa pemrograman yang menambahkan interaktivitas ke situs web Anda . Ini terjadi dalam game, dalam perilaku respons saat tombol ditekan atau saat memasukkan data ke formulir; .

Apa itu JavaScript dan mengapa digunakan?

Javascript digunakan oleh pemrogram di seluruh dunia untuk membuat konten web yang dinamis dan interaktif seperti aplikasi dan browser . JavaScript sangat populer sehingga menjadi bahasa pemrograman yang paling banyak digunakan di dunia, digunakan sebagai bahasa pemrograman sisi klien oleh 97. 0% dari semua situs web.