Pesta kelas dua hari yang lalu, kecuali makan, minum, bersenang -senang dan tidur omong kosong, itu sangat menyenangkan. Itu benar -benar lebih baik untuk bersenang -senang sendirian daripada bersenang -senang.
PS: Jika Anda lulus atau akan lulus, Anda dapat berkumpul jika Anda punya waktu. Setelah lulus, Anda akan memiliki terlalu sedikit waktu untuk berkumpul.
Sekarang saya punya waktu untuk melihat sesuatu dan merangkum sesuatu. Karena saya melihat bagian fungsi JavaScript beberapa menit yang lalu, saya meluangkan waktu untuk meringkas bagian -bagian fungsi yang relevan. Tentu saja, beberapa bagian di dalamnya adalah pemahaman saya sendiri. Jika ada pemahaman yang salah, tolong tunjukkan.
Di bagian ini, saya akan berbicara dengan Anda tentang pernyataan deklarasi fungsi sebelumnya berdasarkan pemahaman saya sendiri.
Catatan: Di beberapa tempat, itu juga disebut promosi deklarasi fungsi. Terjemahannya berbeda, maknanya sama, hanya memahaminya. Pemahaman yang lama!
Sebelum mengobrol tentang Deklarasi Deklarasi Fungsi sebelumnya, perlu untuk memperkenalkan beberapa metode definisi fungsi, yang harus dibiasakan oleh sebagian besar teman. Jika Anda mengerti atau tidak ingin mengerti, roll dengan bahagia. Jika Anda tidak tahu atau ingin terbiasa dengan itu, perlambat dan mulai.
Metode untuk mendefinisikan fungsi
Ada tiga cara utama untuk mendefinisikan fungsi:
1. Deklarasi fungsi
2. Ekspresi Fungsi Fungsi Ekspresi)
3. Konstruktor Fungsi Baru
Di antara mereka, metode definisi fungsi untuk deklarasi fungsi dan ekspresi fungsi sering digunakan. Kedua metode ini memiliki perbedaan dan koneksi yang sangat halus, dan penggunaan kedua metode ini mudah disamakan. Oleh karena itu, artikel ini terutama merangkum titik -titik pengetahuan yang relevan dari dua metode definisi fungsi ini. Tentu saja, topik artikel ini masih tentang fungsi sebelumnya.
Format khas untuk deklarasi fungsi:
function functionName (arg1, arg2, ...) {<!-function body->}Ekspresi fungsi
• Format khas ekspresi fungsi:
var variable = function (arg1, arg2, ...) {<!-function body->}Ekspresi fungsi yang berisi nama (braket, nama fungsi):
var variable = function functionName (arg1, arg2, ...) {<!-function body->}Ekspresi fungsi dengan nama seperti yang di atas dapat digunakan untuk rekursi:
var variable = function functionName (x) {if (x <= 1) return 1; lain return x*functionName (x);}Pernyataan Depan Jadwal
Pernyataan VAR terlebih dahulu
Teman -teman seharusnya pernah mendengar pernyataan itu sebelumnya. Saya ingin mengulanginya di sini, karena pernyataan sebelumnya adalah perbedaan penting antara deklarasi fungsi dan ekspresi fungsi, dan sangat penting bagi kita untuk lebih memahami dua metode definisi fungsi ini.
Tetapi sebelum deklarasi fungsi sebelumnya, perlu untuk mengatakan bahwa Deklarasi VAR sebelumnya.
Pertama berikan kesimpulan awal dari pernyataan VAR:
Variabel didefinisikan dalam skrip atau fungsi yang menyatakannya, dan pernyataan deklarasi variabel akan diajukan ke bagian atas skrip atau fungsi. Namun, operasi inisialisasi variabel masih dieksekusi pada pernyataan VAR asli, dan nilai variabel tidak terdefinisi sebelum pernyataan dinyatakan.
Tiga poin sederhana dapat diringkas dari kesimpulan di atas:
1. Deklarasi variabel akan diajukan ke bagian atas fungsi;
2. Hanya saja deklarasi tersebut maju, inisialisasi tidak maju, dan inisialisasi masih diinisialisasi pada lokasi inisialisasi asli;
3. Nilai variabel tidak ditentukan sebelum deklarasi.
Mari kita ambil contoh:
var tampan = 'tampan'; fungsi handsometougly () {waspada (tampan); var tampan = 'jelek'; peringatan (tampan);} handsometougly ();Output yang benar adalah:
Output pertama tidak terdefinisi, lalu output jelek.
Output kesalahan adalah:
Output pertama tampan, lalu output jelek.
Inilah yang dimainkan oleh Deklarasi Variabel terlebih dahulu. Variabel lokal yang tampan didefinisikan di seluruh badan fungsi. Variabel tampan dalam tubuh fungsi ditekan. Oh tidak, ini mencakup variabel global yang tampan dengan nama yang sama, karena deklarasi variabelnya maju, yaitu, var tampan maju ke atas fungsi, yang seperti ini:
var tampan = 'tampan'; fungsi handsometougly () {var tampan; waspada (tampan); var tampan = 'jelek'; peringatan (tampan);} handsometougly ();Jadi sebelum waspada (tampan), sudah ada deklarasi var yang tampan, seperti yang disebutkan di atas
Nilai variabel tidak ditentukan sebelum deklarasi
Jadi output pertama tidak terdefinisi.
Dan karena yang disebutkan di atas:
Hanya saja deklarasi tersebut maju, inisialisasi tidak maju, inisialisasi masih diinisialisasi di lokasi inisialisasi asli.
Jadi output kedua jelek.
Deklarasi fungsi sebelumnya
Dua berikutnya, kita akan mulai mengobrol tentang deklarasi deklarasi fungsi sebelumnya dalam kombinasi dengan Deklarasi VAR.
Teman harus terbiasa dengan deklarasi deklarasi fungsi sebelumnya, jadi berikan contoh yang sangat akrab.
Saytruth (); <!-Deklarasi Fungsi-> Fungsi Saytruth () {waspada ('myvin tampan.');} saytruth (); <!-Function Expression-> var Saytruth = function () {alert ('myvin tampan.');}Teman semua tahu bahwa metode definisi fungsi deklarasi fungsi, yaitu, metode panggilan fungsi pertama di atas benar, dan kebenaran bahwa myvin tampan. Dapat output, karena pernyataan panggilan fungsi dapat ditempatkan setelah deklarasi fungsi. Untuk metode definisi fungsi ekspresi fungsi, yaitu, metode panggilan fungsi kedua di atas tidak dapat mengeluarkan hasil yang benar dari myVin tampan.
Dikombinasikan dengan myvin di atas tampan. Contoh, kesimpulan dari deklarasi fungsi sebelumnya tampaknya mudah dimengerti. Bukankah hanya ketika menggunakan metode definisi fungsi dari deklarasi fungsi, panggilan fungsi dapat ditempatkan di mana saja. Ya, Anda benar, teman saya, saya tidak tahu cara membantah Anda. Lalu izinkan saya memberi tahu Anda beberapa kata lagi.
Dari apa yang dikatakan teman saya
Bukankah hanya bahwa saat menggunakan metode definisi fungsi untuk deklarasi fungsi, panggilan fungsi dapat ditempatkan di mana saja?
Itu dapat menyebabkan sedikit:
Ketika Deklarasi Fungsi Lanjutan, Deklarasi Fungsi dan Badan Fungsi Lanjutan.
Dan:
Deklarasi fungsi dieksekusi selama periode pra-eksekusi, yaitu, deklarasi fungsi dieksekusi ketika browser siap untuk menjalankan kode. Karena deklarasi fungsi dieksekusi selama periode eksekusi yang diharapkan, deklarasi fungsi tidak lagi dieksekusi selama periode eksekusi (ada orang yang telah melaksanakannya, dan mereka secara alami tidak akan lagi dieksekusi).
Di atas adalah suatu titik.
Mengapa ekspresi fungsi tidak dapat dinyatakan sebelumnya
Mari kita bicara tentang satu hal lagi: Mengapa ekspresi fungsi tidak dapat dinyatakan sebelumnya seperti deklarasi fungsi?
Untungnya, saya tahu sedikit, kalau tidak saya benar -benar tidak tahu bagaimana saya harus menjawab?
Ahem, menurut pemahaman saya, izinkan saya menjelaskan kepada Anda:
Kami mengatakan di atas pernyataan VAR sebelumnya, perhatikan apa yang saya sebutkan di atas:
Hanya saja deklarasi tersebut maju, inisialisasi tidak maju, inisialisasi masih diinisialisasi di lokasi inisialisasi asli.
Oke, mari kita letakkan ekspresi fungsi di sini:
var variable = function (arg1, arg2, ...) {<!-function body->}Ekspresi fungsi adalah cara untuk menulis definisi fungsi ke dalam ekspresi (tampaknya buang -buang waktu, tetapi ini efektif dalam menafsirkan dan memahami bahwa ekspresi fungsi tidak dapat dinyatakan sebelumnya), yaitu menetapkan objek fungsi ke variabel, jadi kami menulis ekspresi fungsi seperti ini:
var variable = 5 melihat ini, mungkin teman akan memahami bahwa satu adalah menetapkan nilai ke variabel, dan yang lainnya adalah menetapkan objek fungsi ke variabel. Oleh karena itu, untuk ekspresi fungsi, penugasan variabel tidak akan maju, yaitu fungsi (arg1, arg2, ...) {<!-body function->} tidak akan maju, sehingga definisi fungsi tidak dijalankan, sehingga ekspresi fungsi tidak dapat dideklarasikan seperti deklarasi fungsi.
Menganalisis instance awal deklarasi fungsi
Kalimat yang sama, kenyataannya adalah dari contoh:
Saytruth (); if (1) {function saytruth () {waspada ('myvin is ganteng')};} else {function saytruth () {waspada ('myvin adalah jelek')};}Ketika browser tidak melakukan kesalahan (tolong uji diri Anda sendiri apakah browser yang sesuai telah melakukan kesalahan. Mengapa saya tidak mengujinya? Dapatkah saya mengatakan saya malas?), Hasil output browser adalah myvin jelek (saya tidak ingin mengakuinya, tetapi kebenarannya adalah, ahhhh, haruskah saya membaca lebih lanjut jika saya jelek ??????).
Mengapa? Tentu saja, pernyataan itu maju. Karena deklarasi fungsi sudah maju, deklarasi fungsi akan diuraikan sebelum kode dieksekusi. Urutan eksekusi adalah sebagai berikut: Fungsi parse pertama mengatakanTruth () {alert ('myvin is goteh')}, dan ketika fungsi parsing mengatakan () {waspada ('myvin adalah jelek')}, menimpa deklarasi fungsi sebelumnya. Ketika kita menyebut fungsi Saytruth (), yaitu, selama eksekusi kode, deklarasi akan diabaikan, jadi myvin jelek secara alami akan menjadi output (sungguh realitas yang kejam ...). Jika Anda lupa, Anda dapat melihat apa yang Anda katakan di atas:
Deklarasi fungsi dieksekusi selama periode pra-eksekusi, yaitu, deklarasi fungsi dieksekusi ketika browser siap untuk menjalankan kode. Karena deklarasi fungsi dieksekusi selama periode eksekusi yang diharapkan, deklarasi fungsi tidak lagi dieksekusi selama periode eksekusi (ada orang yang telah melaksanakannya, dan mereka secara alami tidak akan lagi dieksekusi).
Panggilan dekat
Mari kita bicara tentang fungsi yang dinyatakan sebelumnya (perbaikan) di sini. Saya berharap pemahaman dan omong kosong saya dapat membantu mereka yang membutuhkan.
Tentu saja, latihan menghasilkan pengetahuan sejati. Pemahaman, kognisi, dan penerapan hal -hal masih terletak pada membaca, menggunakan, dan merangkum lebih banyak. Saya ingat pepatah terkenal yang berbicara tentang pernyataan dan praktik: "Mari kita bergerak dan bersorak untuk pernyataan baru."
Analisis singkat dari deklarasi fungsi dan ekspresi fungsi - pernyataan deklarasi fungsi adalah semua konten yang telah saya bagikan dengan Anda sebelumnya. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.