Ini adalah metode yang paling banyak digunakan dan disukai dari ketiganya. Dalam metode ini, kami mendefinisikan skrip dalam file terpisah dan menautkannya menggunakan atribut src dari tag skrip di bagian kepala dokumen HTML. Jenis harus disetel ke teks\javascript. File javascript eksternal akan memiliki a. ekstensi js
Fungsi adalah salah satu blok bangunan mendasar dalam JavaScript. Fungsi dalam JavaScript mirip dengan prosedur—seperangkat pernyataan yang melakukan tugas atau menghitung nilai, tetapi agar prosedur memenuhi syarat sebagai fungsi, prosedur harus mengambil beberapa input dan mengembalikan output di mana ada beberapa hubungan yang jelas antara . Untuk menggunakan suatu fungsi, Anda harus mendefinisikannya di suatu tempat dalam lingkup yang ingin Anda panggil
Daftar parameter fungsi, diapit tanda kurung dan dipisahkan dengan koma
Pernyataan JavaScript yang mendefinisikan fungsi, terlampir dalam kurung kurawal,
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
0
Misalnya, kode berikut mendefinisikan fungsi sederhana bernama
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
1
functionsquare(number){return number * number;}
Fungsi
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
_1 mengambil satu parameter, disebut
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
3. Fungsi terdiri dari satu pernyataan yang mengatakan untuk mengembalikan parameter fungsi (yaitu,
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
3) dikalikan dengan dirinya sendiri. Pernyataan
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
_5 menentukan nilai yang dikembalikan oleh fungsi
return number * number;
_
Parameter pada dasarnya diteruskan ke fungsi dengan nilai — jadi jika kode di dalam badan fungsi memberikan nilai yang benar-benar baru ke parameter yang diteruskan ke fungsi, perubahan tersebut tidak tercermin secara global atau dalam kode yang memanggil fungsi itu
Saat Anda melewatkan objek sebagai parameter, jika fungsi mengubah properti objek, perubahan itu terlihat di luar fungsi, seperti yang ditunjukkan pada contoh berikut
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_
Saat Anda melewatkan larik sebagai parameter, jika fungsi mengubah salah satu nilai larik, perubahan itu terlihat di luar fungsi, seperti yang diperlihatkan dalam contoh berikut
Sementara deklarasi fungsi di atas secara sintaksis adalah pernyataan, fungsi juga dapat dibuat dengan ekspresi fungsi
Fungsi seperti itu bisa anonim; . Misalnya, fungsi
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
_1 dapat didefinisikan sebagai
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
_
Namun, nama dapat diberikan dengan ekspresi fungsi. Memberikan nama memungkinkan fungsi merujuk ke dirinya sendiri, dan juga memudahkan untuk mengidentifikasi fungsi dalam jejak tumpukan debugger
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
Ekspresi fungsi berguna saat meneruskan fungsi sebagai argumen ke fungsi lain. Contoh berikut menunjukkan fungsi
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
7 yang harus menerima fungsi sebagai argumen pertama dan array sebagai argumen kedua
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
Dalam kode berikut, fungsi menerima fungsi yang didefinisikan oleh ekspresi fungsi dan mengeksekusinya untuk setiap elemen array yang diterima sebagai argumen kedua
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
Pengembalian fungsi.
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
_8
Dalam JavaScript, suatu fungsi dapat didefinisikan berdasarkan suatu kondisi. Misalnya, definisi fungsi berikut mendefinisikan
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
9 hanya jika
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
0 sama dengan
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
1
let myFunc;if(num ===0){myFunc=function(theObject){
theObject.make ='Toyota';}}
Selain mendefinisikan fungsi seperti yang dijelaskan di sini, Anda juga dapat menggunakan konstruktor
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
2 untuk membuat fungsi dari string saat runtime, seperti
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
3
Metode adalah fungsi yang merupakan properti dari suatu objek. Baca selengkapnya tentang objek dan metode dalam Bekerja dengan objek
Mendefinisikan fungsi tidak menjalankannya. Mendefinisikannya menamai fungsi dan menentukan apa yang harus dilakukan saat fungsi dipanggil
Memanggil fungsi sebenarnya melakukan tindakan yang ditentukan dengan parameter yang ditunjukkan. Misalnya, jika Anda mendefinisikan fungsi
constsquare=function(number){return number * number;}const x =square(4);// x gets the value 16
_1, Anda dapat memanggilnya sebagai berikut
square(5);
Pernyataan sebelumnya memanggil fungsi dengan argumen
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
5. Fungsi mengeksekusi pernyataannya dan mengembalikan nilai
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
6
Fungsi harus berada dalam ruang lingkup ketika dipanggil, tetapi deklarasi fungsi dapat (muncul di bawah panggilan dalam kode). Ruang lingkup deklarasi fungsi adalah fungsi yang dideklarasikan (atau seluruh program, jika dideklarasikan di tingkat atas)
Argumen suatu fungsi tidak terbatas pada string dan angka. Anda dapat meneruskan seluruh objek ke suatu fungsi. Fungsi
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
_7 (didefinisikan dalam ) adalah contoh fungsi yang menggunakan objek sebagai argumen
Suatu fungsi dapat memanggil dirinya sendiri. Sebagai contoh, berikut adalah fungsi yang menghitung faktorial secara rekursif
return number * number;
_0
Anda kemudian dapat menghitung faktorial dari
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
8 hingga
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
5 sebagai berikut
return number * number;
_1
Ada cara lain untuk memanggil fungsi. Sering ada kasus di mana suatu fungsi perlu dipanggil secara dinamis, atau jumlah argumen untuk suatu fungsi berbeda-beda, atau di mana konteks pemanggilan fungsi perlu disetel ke objek tertentu yang ditentukan saat runtime
Ternyata fungsi itu sendiri adalah objek — dan pada gilirannya, objek-objek ini memiliki metode. (Lihat objek
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
_2. ) Metode
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
1 dan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
2 dapat digunakan untuk mencapai tujuan ini
Perhatikan contoh di bawah ini
return number * number;
_2
Kode ini berjalan tanpa kesalahan, meskipun fungsi
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
3 dipanggil sebelum dideklarasikan. Ini karena juru bahasa JavaScript mengerek seluruh deklarasi fungsi ke atas cakupan saat ini, sehingga kode di atas sama dengan
return number * number;
_3
Pengangkatan fungsi hanya berfungsi dengan deklarasi fungsi — bukan dengan ekspresi fungsi. Kode di bawah ini tidak akan berfungsi
return number * number;
_4
Variabel yang didefinisikan di dalam fungsi tidak dapat diakses dari manapun di luar fungsi, karena variabel hanya didefinisikan dalam ruang lingkup fungsi. Namun, suatu fungsi dapat mengakses semua variabel dan fungsi yang didefinisikan di dalam lingkup di mana ia didefinisikan
Dengan kata lain, sebuah fungsi yang didefinisikan dalam lingkup global dapat mengakses semua variabel yang didefinisikan dalam lingkup global. Fungsi yang didefinisikan di dalam fungsi lain juga dapat mengakses semua variabel yang didefinisikan dalam fungsi induknya, dan variabel lain yang dapat diakses oleh fungsi induk
return number * number;
_5
Suatu fungsi dapat merujuk dan memanggil dirinya sendiri. Ada tiga cara bagi suatu fungsi untuk menyebut dirinya sendiri
Nama fungsi
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
4
Variabel dalam ruang lingkup yang mengacu pada fungsi
Sebagai contoh, perhatikan definisi fungsi berikut
return number * number;
_6
Di dalam badan fungsi, berikut ini semuanya setara
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
5
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
6
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
7
Suatu fungsi yang memanggil dirinya sendiri disebut fungsi rekursif. Dalam beberapa hal, rekursi analog dengan loop. Keduanya mengeksekusi kode yang sama beberapa kali, dan keduanya memerlukan kondisi (untuk menghindari loop tak terbatas, atau lebih tepatnya, rekursi tak terbatas dalam kasus ini)
Sebagai contoh, perhatikan loop berikut
return number * number;
_7
Itu dapat diubah menjadi deklarasi fungsi rekursif, diikuti dengan panggilan ke fungsi itu
return number * number;
_8
Namun, beberapa algoritme tidak dapat berupa loop iteratif sederhana. Misalnya, mendapatkan semua simpul dari struktur pohon (seperti DOM) lebih mudah melalui rekursi
return number * number;
_9
Dibandingkan dengan fungsi
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
_8, setiap panggilan rekursif itu sendiri membuat banyak panggilan rekursif di sini
Dimungkinkan untuk mengonversi algoritme rekursif apa pun menjadi algoritme non-rekursif, tetapi logikanya seringkali jauh lebih kompleks, dan untuk melakukannya memerlukan penggunaan tumpukan.
Faktanya, rekursi itu sendiri menggunakan tumpukan. tumpukan fungsi. Perilaku seperti tumpukan dapat dilihat pada contoh berikut
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_0
Anda dapat membuat sarang fungsi di dalam fungsi lain. Fungsi bersarang (dalam) bersifat pribadi untuk fungsi yang memuatnya (luar).
Itu juga membentuk penutupan. Penutupan adalah ekspresi (paling umum, fungsi) yang dapat memiliki variabel bebas bersama dengan lingkungan yang mengikat variabel tersebut (yang "menutup" ekspresi)
Karena fungsi bersarang adalah penutupan, ini berarti bahwa fungsi bersarang dapat "mewarisi" argumen dan variabel dari fungsi yang memuatnya. Dengan kata lain, inner function berisi cakupan dari outer function
Untuk meringkas
Fungsi bagian dalam hanya dapat diakses dari pernyataan di fungsi bagian luar
Fungsi batin membentuk penutupan. fungsi dalam dapat menggunakan argumen dan variabel dari fungsi luar, sedangkan fungsi luar tidak dapat menggunakan argumen dan variabel dari fungsi dalam
Contoh berikut menunjukkan fungsi bersarang
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_1
Karena fungsi dalam membentuk penutupan, Anda dapat memanggil fungsi luar dan menentukan argumen untuk fungsi luar dan dalam
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_2
Perhatikan bagaimana
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
_9 dipertahankan saat
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
0 dikembalikan. Penutupan harus mempertahankan argumen dan variabel di semua cakupan yang dirujuknya. Karena setiap panggilan memberikan argumen yang berpotensi berbeda, penutupan baru dibuat untuk setiap panggilan ke
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
1. Memori hanya dapat dibebaskan ketika
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
0 yang dikembalikan tidak lagi dapat diakses
Ini tidak berbeda dengan menyimpan referensi di objek lain, tetapi seringkali kurang jelas karena seseorang tidak mengatur referensi secara langsung dan tidak dapat memeriksanya
Fungsi dapat bersarang berlipat ganda. Sebagai contoh
Fungsi (
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_3) berisi fungsi (
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4), yang dengan sendirinya berisi fungsi (
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5)
Kedua fungsi
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4 dan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5 membentuk penutupan di sini. Jadi,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_4 dapat mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3, dan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5 dapat mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4
Selain itu, karena
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 dapat mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4 yang dapat mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5 juga dapat mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3
Dengan demikian, penutupan dapat berisi banyak cakupan; . Ini disebut rantai lingkup. (Alasannya disebut "rantai" akan dijelaskan nanti. )
Perhatikan contoh berikut
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_3
Dalam contoh ini,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4
let myFunc;if(num ===0){myFunc=function(theObject){
theObject.make ='Toyota';}}
9 dan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
9
Ini bisa dilakukan karena
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_4 membentuk penutupan termasuk
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3 (i. e. ,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_4 dapat mengakses argumen dan variabel
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3)
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 membentuk penutupan termasuk
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4
Karena penutupan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 mencakup
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4 dan penutupan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4 mencakup
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3, maka penutupan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5 juga mencakup
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3. Ini berarti
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 dapat mengakses argumen dan variabel
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4 dan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3. Dengan kata lain,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 merangkai cakupan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4 dan
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3, dalam urutan itu
Sebaliknya, bagaimanapun, tidak benar.
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3 tidak dapat mengakses
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5, karena
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
3 tidak dapat mengakses argumen atau variabel apa pun dari
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4, yang
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
5 adalah variabel dari. Jadi,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_5 tetap pribadi hanya untuk
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
4
Ketika dua argumen atau variabel dalam cakupan penutupan memiliki nama yang sama, ada konflik nama. Cakupan bersarang lebih diutamakan. Jadi, ruang lingkup terdalam mengambil prioritas tertinggi, sedangkan ruang lingkup terluar mengambil yang terendah. Ini adalah rantai ruang lingkup. Yang pertama pada rantai adalah lingkup terdalam, dan yang terakhir adalah lingkup terluar. Pertimbangkan yang berikut ini
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_4
Konflik nama terjadi pada pernyataan
return number * number;
_17 dan berada di antara parameter
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_0
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
9 dan variabel
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
1
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
9. Rantai cakupan di sini adalah {
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
_0,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
1, objek global}. Oleh karena itu,
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
0
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
9 lebih diutamakan daripada
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
1
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
9, dan
return number * number;
28 (
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}constf=function(x){return x * x * x;}const numbers =[0,1,2,5,10];const cube =map(f, numbers);
console.log(cube);
0
functionmap(f, a){const result =newArray(a.length);for(let i =0; i < a.length; i++){
result[i]=f(a[i]);}return result;}
9) dikembalikan sebagai ganti _
return number * number;
31 (______1's ______16______16______1)
Penutupan adalah salah satu fitur JavaScript yang paling kuat. JavaScript memungkinkan untuk bersarang fungsi dan memberikan akses penuh ke fungsi dalam ke semua variabel dan fungsi yang didefinisikan di dalam fungsi luar (dan semua variabel dan fungsi lain yang dapat diakses oleh fungsi luar)
Namun, fungsi luar tidak memiliki akses ke variabel dan fungsi yang didefinisikan di dalam fungsi dalam. Ini memberikan semacam enkapsulasi untuk variabel fungsi dalam
Selain itu, karena fungsi dalam memiliki akses ke ruang lingkup fungsi luar, variabel dan fungsi yang didefinisikan dalam fungsi luar akan hidup lebih lama daripada durasi eksekusi fungsi luar, jika fungsi dalam berhasil bertahan melebihi umur fungsi luar. . Penutupan dibuat ketika fungsi dalam entah bagaimana dibuat tersedia untuk ruang lingkup apa pun di luar fungsi luar
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_5
Itu bisa jauh lebih kompleks daripada kode di atas. Objek yang berisi metode untuk memanipulasi variabel dalam dari fungsi luar dapat dikembalikan
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_6
Pada kode di atas, variabel
return number * number;
_34 dari fungsi luar dapat diakses oleh fungsi dalam, dan tidak ada cara lain untuk mengakses variabel dalam kecuali melalui fungsi dalam. Variabel dalam dari fungsi dalam bertindak sebagai penyimpanan yang aman untuk argumen dan variabel luar. Mereka menyimpan data "persisten" dan "dienkapsulasi" agar fungsi bagian dalam dapat digunakan. Fungsi bahkan tidak harus ditugaskan ke variabel, atau memiliki nama
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_7
Catatan. Ada sejumlah jebakan yang harus diperhatikan saat menggunakan penutupan
Jika fungsi terlampir mendefinisikan variabel dengan nama yang sama dengan variabel di lingkup luar, maka tidak ada cara untuk merujuk ke variabel di lingkup luar lagi. (Variabel lingkup dalam "menimpa" variabel luar, sampai program keluar dari lingkup dalam. Itu dapat dianggap sebagai a. )
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_8
Argumen suatu fungsi dipertahankan dalam objek seperti array. Di dalam suatu fungsi, Anda dapat mengatasi argumen yang diteruskan ke fungsi tersebut sebagai berikut
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
_9
di mana
return number * number;
_35 adalah nomor urut argumen, mulai dari
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
1. Jadi, argumen pertama yang diteruskan ke suatu fungsi adalah
return number * number;
37. Jumlah total argumen ditunjukkan oleh
return number * number;
38
Menggunakan objek
return number * number;
_39, Anda dapat memanggil fungsi dengan lebih banyak argumen daripada yang secara formal dinyatakan untuk diterima. Ini seringkali berguna jika Anda tidak mengetahui sebelumnya berapa banyak argumen yang akan diteruskan ke fungsi. Anda dapat menggunakan
return number * number;
38 untuk menentukan jumlah argumen yang benar-benar diteruskan ke fungsi, lalu mengakses setiap argumen menggunakan objek
return number * number;
39
Misalnya, pertimbangkan fungsi yang menggabungkan beberapa string. Satu-satunya argumen formal untuk fungsi tersebut adalah string yang menentukan karakter yang memisahkan item untuk digabungkan. Fungsi tersebut didefinisikan sebagai berikut
Sampai panah berfungsi, setiap fungsi baru mendefinisikan nilainya sendiri
return number * number;
56 (objek baru dalam kasus konstruktor, tidak terdefinisi dalam pemanggilan fungsi mode ketat, objek dasar jika fungsi disebut sebagai "metode objek", dll. ). Ini terbukti kurang ideal dengan gaya pemrograman berorientasi objek
JavaScript memiliki beberapa fungsi bawaan tingkat atas
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
3
Metode
constfactorial=functionfac(n){return n <2?1: n *fac(n -1);}
console.log(factorial(3))
_3 mengevaluasi kode JavaScript yang direpresentasikan sebagai string
return number * number;
_72
Fungsi
return number * number;
_72 global menentukan apakah nilai yang diteruskan adalah bilangan terbatas. Jika perlu, parameter terlebih dahulu dikonversi menjadi angka
return number * number;
_74
Fungsi
return number * number;
74 menentukan apakah suatu nilai
return number * number;
51 atau tidak. Catatan. paksaan di dalam fungsi
return number * number;
_77 memiliki aturan;
return number * number;
_79
Fungsi ________8______79 mem-parsing argumen string dan mengembalikan angka floating point
return number * number;
_81
Fungsi
return number * number;
81 mem-parsing argumen string dan mengembalikan bilangan bulat dari radix yang ditentukan (basis dalam sistem angka matematika)
return number * number;
_83
Fungsi
return number * number;
83 menerjemahkan Uniform Resource Identifier (URI) yang sebelumnya dibuat oleh
return number * number;
85 atau dengan rutin serupa
return number * number;
_86
Metode
return number * number;
86 menerjemahkan komponen Uniform Resource Identifier (URI) yang sebelumnya dibuat oleh
return number * number;
88 atau dengan rutin serupa
return number * number;
_89
Metode
return number * number;
89 mengkodekan Uniform Resource Identifier (URI) dengan mengganti setiap instance karakter tertentu dengan satu, dua, tiga, atau empat escape sequence yang mewakili pengkodean karakter UTF-8 (hanya akan menjadi empat escape sequence untuk karakter yang terdiri dari dua
return number * number;
_91
Metode
return number * number;
91 mengkodekan komponen Uniform Resource Identifier (URI) dengan mengganti setiap instance karakter tertentu dengan satu, dua, tiga, atau empat escape sequence yang mewakili pengkodean UTF-8 karakter (hanya akan menjadi empat escape sequence untuk karakter yang terdiri dari
return number * number;
_93
Metode
return number * number;
93 yang sudah tidak digunakan lagi menghitung string baru di mana karakter tertentu telah diganti dengan urutan escape heksadesimal. Gunakan
return number * number;
_85 atau
return number * number;
88 sebagai gantinya
return number * number;
_97
Metode
return number * number;
97 yang tidak digunakan lagi menghitung string baru di mana urutan escape heksadesimal diganti dengan karakter yang diwakilinya. Urutan pelarian mungkin diperkenalkan oleh fungsi seperti
return number * number;
99. Karena
return number * number;
_97 sudah tidak digunakan lagi, gunakan
return number * number;
83 atau
functionmyFunc(theObject){
theObject.make ='Toyota';}const mycar ={make:'Honda',model:'Accord',year:1998,};// x gets the value "Honda"const x = mycar.make;// the make property is changed by the functionmyFunc(mycar);// y gets the value "Toyota"const y = mycar.make;
02 sebagai gantinya
Bagaimana Anda menulis fungsi di dalam HTML?
Di dalam bagian kepala dokumen HTML, kita telah mendefinisikan sebuah fungsi (mis. g myfunction();) di dalam tag skrip .
fungsi myfunction() {
alert("apa kabar");
.
Bagaimana cara menulis HTML dalam fungsi JavaScript?
Contoh Lainnya .
Buka aliran keluaran, tambahkan beberapa HTML, lalu tutup aliran keluaran. membuka();
Buka jendela baru dan tulis beberapa HTML ke dalamnya. const myWindow = jendela. membuka(); . dokumen. .
Contoh. dokumen. write("Halo Dunia. "); write("Semoga harimu menyenangkan. "
Bagaimana Anda memanggil fungsi di dalam div dalam HTML?
Anda dapat menamai setiap fungsi sesuai dengan id div dan memanggilnya secara dinamis menggunakan sintaks object["methodName"]() .
Bagaimana Anda menampilkan fungsi dalam HTML?
Untuk menampilkan output di konsol browser, Anda dapat menggunakan “console. log()”. Untuk menulis ke dalam HTML dan menampilkan hasilnya, Anda dapat menggunakan “ document. write()” fungsi .