Rumah hujung hadapan web tutorial js Analisis ringkas pengisytiharan fungsi dan ungkapan fungsi - pengisytiharan pengisytiharan fungsi terlebih dahulu_Pengetahuan asas

Analisis ringkas pengisytiharan fungsi dan ungkapan fungsi - pengisytiharan pengisytiharan fungsi terlebih dahulu_Pengetahuan asas

May 16, 2016 pm 03:02 PM
pengisytiharan fungsi

Dua hari pertama pesta kelas, selain daripada makan, minum, berseronok, tidur dan bercakap, ia benar-benar tidak sebaik berseronok bersendirian daripada berseronok bersama.

PS: Yang dah grad atau dah nak grad, just get together kalau ada masa lepas grad, masa nak berkumpul pun sikit.

Sekarang saya mempunyai sedikit masa untuk melihat beberapa perkara dan meringkaskan beberapa perkara, dan kerana saya melihat bahagian fungsi JavaScript sekeping demi sekeping suatu ketika dahulu, saya meluangkan masa untuk meringkaskan bahagian fungsi yang berkaitan , beberapa bahagian adalah milik saya saya faham Jika ada yang salah dengan pemahaman anda, sila nyatakan.

Dalam bahagian ini, saya akan bercakap tentang pengisytiharan pengisytiharan fungsi terlebih dahulu berdasarkan pemahaman saya sendiri.

Nota: Di sesetengah tempat, ia juga dipanggil promosi pengisytiharan fungsi. Terjemahannya berbeza, tetapi maknanya sama, asalkan semua orang faham. Hidup pemahaman!

Sebelum bercakap tentang pengisytiharan pengisytiharan fungsi terlebih dahulu, adalah perlu untuk memperkenalkan beberapa kaedah definisi fungsi, yang sepatutnya biasa kepada kebanyakan rakan. Jika anda tahu sesuatu atau tidak mahu mengetahuinya, gulung sahaja ke bawah Jika anda tidak biasa dengannya atau ingin membiasakannya, cuma perlahan dan mula berjalan.

Bagaimana untuk menentukan fungsi

Terdapat tiga cara utama untuk mentakrifkan fungsi:

1. Pengisytiharan Fungsi
2. Ungkapan Fungsi)
3.pembina Fungsi baharu
Antaranya, kaedah definisi fungsi pengisytiharan fungsi dan ungkapan fungsi sering digunakan Kedua-dua kaedah ini mempunyai perbezaan dan sambungan yang sangat halus, dan penggunaan kedua-dua kaedah ini juga mudah dikelirukan, jadi artikel ini meringkaskan kedua-dua kaedah ini mata pengetahuan tentang kaedah definisi fungsi Sudah tentu, tema artikel ini masih mengenai fungsi terlebih dahulu.

Format biasa pengisytiharan fungsi:

function functionName(arg1, arg2, ...){
  <!-- function body -->
}
Salin selepas log masuk

Ekspresi fungsi

•Format biasa ungkapan fungsi:

var variable=function(arg1, arg2, ...){
      <!-- function body -->
}
Salin selepas log masuk

Ungkapan fungsi yang mengandungi nama (kurung, nama fungsi):

var variable=function functionName(arg1, arg2, ...){
    <!-- function body -->
}
Salin selepas log masuk

Ungkapan fungsi dengan nama seperti di atas boleh digunakan secara rekursif:

var variable=function functionName(x){
    if(x<=1)
      return 1;
    else
      return x*functionName(x);
}
Salin selepas log masuk

Pengisytiharan terlebih dahulu

pengisytiharan var terlebih dahulu

Semua orang sepatutnya telah mendengar tentang pernyataan pengisytiharan terlebih dahulu Saya ingin mengulanginya di sini kerana pengisytiharan terlebih dahulu adalah perbezaan penting antara pengisytiharan fungsi dan ungkapan fungsi .

Tetapi sebelum bercakap tentang pengisytiharan fungsi terlebih dahulu, adalah perlu untuk bercakap tentang pengisytiharan var terlebih dahulu.

Mula-mula berikan kesimpulan sebelum pernyataan var:

Pembolehubah ditakrifkan dalam skrip atau fungsi di mana ia diisytiharkan, dan penyataan pengisytiharan pembolehubah akan dimajukan ke bahagian atas skrip atau fungsi. Walau bagaimanapun, operasi pemula pembolehubah masih dilakukan di lokasi penyataan var asal, dan nilai pembolehubah tidak ditentukan sebelum penyataan perisytiharan.

Tiga perkara mudah boleh diringkaskan daripada kesimpulan di atas:

1. Pengisytiharan pembolehubah akan dimajukan ke bahagian atas fungsi
2. Hanya pengisytiharan dimajukan, pemulaan tidak dimajukan, dan pemulaan masih dilakukan pada kedudukan pemulaan asal; 3. Nilai pembolehubah sebelum pengisytiharan tidak ditentukan.

Mari beri contoh:

var handsome='handsome';
function handsomeToUgly(){
  alert(handsome);
  var handsome='ugly';
  alert(handsome);
}
handsomeToUgly();
Salin selepas log masuk
Output yang betul ialah:

Keluaran pertama tidak ditentukan, kemudian keluaran hodoh.

Keluaran yang salah ialah:

Keluaran pertama kacak, kemudian keluaran hodoh.

Berikut ialah peranan pengisytiharan berubah-ubah terlebih dahulu. Pembolehubah tempatan kacak ditakrifkan dalam keseluruhan badan fungsi Pembolehubah kacak dalam badan fungsi ditindas maju ke fungsi Di bahagian atas, ini adalah rupanya:


var handsome='handsome';
function handsomeToUgly(){
  var handsome;
  alert(handsome);
  var handsome='ugly';
  alert(handsome);
}
handsomeToUgly();
Salin selepas log masuk
Jadi sebelum alert(handsome), sudah ada var statement handsome, seperti yang disebutkan di atas

Nilai pembolehubah sebelum pengisytiharan tidak ditentukan

Jadi output pertama tidak ditentukan.

Dan kerana yang disebutkan di atas:

Hanya pengisytiharan dimajukan, pemulaan tidak dimajukan dan pemulaan masih dilakukan pada kedudukan pemulaan asal

Jadi output kedua adalah hodoh.

Pengisytiharan fungsi terlebih dahulu

Dalam dua bab seterusnya, kita akan mula bercakap tentang pengisytiharan pengisytiharan fungsi terlebih dahulu bersama-sama dengan pengisytiharan var.

Semua orang harus biasa dengan pengisytiharan fungsi terlebih dahulu Biar saya memberi anda contoh yang sangat biasa.

sayTruth();<!-- 函数声明 -->
function sayTruth(){
  alert('myvin is handsome.');
}

sayTruth();<!-- 函数表达式 -->
var sayTruth=function(){
  alert('myvin is handsome.');
}
Salin selepas log masuk

小伙伴们都知道,对于函数声明的函数定义方法,即上面的第一种函数调用方法是正确的,可以输出myvin is handsome.的真理,因为函数调用语句可以放在函数声明之后。而对于函数表达式的函数定义方法,即上面的第二种函数调用的方法是不能输出myvin is handsome.的正确结果的。

结合上面的myvin is handsome.例子,函数声明提前的结论似乎很好理解,不就是在使用函数声明的函数定义方法的时候,函数调用可以放在任意位置嘛。对啊,你说的很对啊,小伙伴,我都不知道怎么反驳你了。那就容我再扯几句。

从小伙伴所说的

不就是在使用函数声明的函数定义方法的时候,函数调用可以放在任意位置嘛
可以引出一点:

函数声明提前的时候,函数声明和函数体均提前了。

而且:

函数声明是在预执行期执行的,就是说函数声明是在浏览器准备执行代码的时候执行的。因为函数声明在预执行期被执行,所以到了执行期,函数声明就不再执行(人家都执行过了自然就不再执行了)。

上面是一点。

函数表达式为什么不能声明提前
我们再说一点:为什么函数表达式不能像函数声明那样进行函数声明提前呢?

辛亏我知道一点儿,否则真不知道我该怎么回答呢?

咳咳,按照我的理解给小伙伴们解释一下下:

我们上面说了var的声明提前,注意我上面提过的:

只是声明被提前,初始化不提前,初始化还在原来初始化的位置进行初始化

Ok,我们把函数表达式摆在这看看:

var variable=function(arg1, arg2, ...){
          <!-- function body -->
}
Salin selepas log masuk

函数表达式就是把函数定义的方式写成表达式的方式(貌似是白说,但是这对于解释和理解为毛函数表达式不能函数声明提前具有良好的疗效),就是把一个函数对象赋值给一个变量,所以我们把函数表达式写成这个样子:

var varible=5看到这,也许小伙伴们会明白了,一个是把一个值赋值给一个变量,一个是把函数对象赋值给一个变量,所以对于函数表达式,变量赋值是不会提前的,即function(arg1, arg2, ...){}是不会提前的,所以函数定义并没有被执行,所以函数表达式不能像函数声明那样进行函数声明提前。

函数声明提前的实例分析

还是那句话,还是例子来的实在:

sayTruth();
if(1){
  function sayTruth(){alert('myvin is handsome')};
}
else{
  function sayTruth(){alert('myvin is ugly')};
}
Salin selepas log masuk

在浏览器不抛出错误的情况下(请自行测试相应的浏览器是否有抛出错误的情况,为啥我不测试?我能说我懒么。。。),浏览器的输出结果是输出myvin is ugly(我不愿承认,但是事实就是这样啊啊啊啊,难道道出了人丑就该多读书??????)。

为什么呢?当然是声明提前了。因为函数声明提前,所以函数声明会在代码执行前进行解析,执行顺序是这样的,先解析function sayTruth(){alert('myvin is handsome')},在解析function sayTruth(){alert('myvin is ugly')},覆盖了前面的函数声明,当我们调用sayTruth()函数的时候,也就是到了代码执行期间,声明会被忽略,所以自然会输出myvin is ugly(好残酷的现实。。。)。忘了的可以看上面说过的:

函数声明是在预执行期执行的,就是说函数声明是在浏览器准备执行代码的时候执行的。因为函数声明在预执行期被执行,所以到了执行期,函数声明就不再执行了(人家都执行过了自然就不再执行了)。

小了个结

关于函数声明的函数提前(提升)就聊到这里先,希望我的理解和扯淡能够对有需要的小伙伴有所帮助。

当然,实践出真知。对事物的了解、认知和运用还是在于多看多用多总结,记得有句名言,是讲声明和实践的:“动起来,为新的声明喝彩。”。

以上这篇浅析函数声明和函数表达式——函数声明的声明提前就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Parameter lalai dalam pengisytiharan fungsi C++: analisis komprehensif tentang pengisytiharan dan penggunaannya Parameter lalai dalam pengisytiharan fungsi C++: analisis komprehensif tentang pengisytiharan dan penggunaannya May 02, 2024 pm 03:09 PM

Parameter lalai dalam C++ menyediakan keupayaan untuk menentukan nilai lalai untuk parameter fungsi, dengan itu meningkatkan kebolehbacaan kod, kesederhanaan dan fleksibiliti. Isytihar parameter lalai: Tambahkan simbol "=" selepas parameter dalam pengisytiharan fungsi, diikuti dengan nilai lalai. Penggunaan: Apabila fungsi dipanggil, jika parameter pilihan tidak disediakan, nilai lalai akan digunakan. Kes praktikal: Fungsi yang mengira jumlah dua nombor Satu parameter diperlukan dan satu lagi adalah pilihan dan mempunyai nilai lalai 0. Kelebihan: Kebolehbacaan yang dipertingkatkan, peningkatan fleksibiliti, pengurangan kod plat dandang. Nota: Ia hanya boleh dinyatakan dalam pengisytiharan, ia mestilah pada penghujungnya, dan jenisnya mestilah serasi.

Apakah kesan susunan pengisytiharan dan definisi fungsi C++? Apakah kesan susunan pengisytiharan dan definisi fungsi C++? Apr 19, 2024 pm 01:42 PM

Dalam C++, susunan pengisytiharan dan definisi fungsi mempengaruhi proses penyusunan dan pemautan. Yang paling biasa ialah pengisytiharan didahulukan dan definisi datang selepas; anda juga boleh menggunakan "pengisytiharan hadapan" untuk meletakkan definisi sebelum pengisytiharan jika kedua-duanya wujud pada masa yang sama, pengkompil akan mengabaikan perisytiharan dan hanya menggunakan definisi.

Apakah perbezaan antara pengisytiharan dan definisi fungsi C++? Apakah perbezaan antara pengisytiharan dan definisi fungsi C++? Apr 18, 2024 pm 04:03 PM

Pengisytiharan fungsi memberitahu pengkompil tentang kewujudan fungsi dan tidak mengandungi pelaksanaan, yang digunakan untuk pemeriksaan jenis. Definisi fungsi menyediakan pelaksanaan sebenar, termasuk badan fungsi. Ciri membezakan utama termasuk: tujuan, lokasi, peranan. Memahami perbezaan adalah penting untuk menulis kod C++ yang cekap dan boleh diselenggara.

Pengisytiharan dan definisi fungsi C++ Pengisytiharan dan definisi fungsi C++ Apr 11, 2024 pm 01:27 PM

Pengisytiharan dan definisi fungsi diperlukan dalam C++ Pengisytiharan fungsi menentukan jenis pulangan, nama dan parameter fungsi, manakala definisi fungsi mengandungi badan fungsi dan pelaksanaan. Mula-mula mengisytiharkan fungsi dan kemudian gunakannya dalam program anda dengan lulus parameter yang diperlukan. Gunakan pernyataan pulangan untuk mengembalikan nilai daripada fungsi.

Ralat kompilasi C++: panggilan fungsi tidak sepadan dengan pengisytiharan fungsi, bagaimana untuk menyelesaikannya? Ralat kompilasi C++: panggilan fungsi tidak sepadan dengan pengisytiharan fungsi, bagaimana untuk menyelesaikannya? Aug 22, 2023 pm 12:39 PM

Ralat kompilasi C++: panggilan fungsi tidak sepadan dengan pengisytiharan fungsi, bagaimana untuk menyelesaikannya? Apabila membangunkan program C++, anda pasti akan menghadapi beberapa ralat kompilasi Salah satu ralat biasa ialah panggilan fungsi tidak sepadan dengan pengisytiharan fungsi. Ralat jenis ini wujud secara meluas dalam kalangan pengaturcara C++ Disebabkan tidak memberi perhatian kepada ketepatan pengisytiharan fungsi, ia membawa kepada masalah kompilasi, yang akhirnya membuang masa dan tenaga untuk menyelesaikan masalah dan menjejaskan kecekapan pembangunan. Cara untuk mengelakkan kesilapan ini memerlukan mengikut beberapa norma dan amalan standard, mari kita lihat di bawah. Apakah panggilan fungsi berbanding pengisytiharan fungsi?

[[nodiscard]] dalam pengisytiharan fungsi C++: Menjelaskan akibat mengabaikan nilai pulangan [[nodiscard]] dalam pengisytiharan fungsi C++: Menjelaskan akibat mengabaikan nilai pulangan May 01, 2024 pm 06:18 PM

Atribut [[nodiscard]] menunjukkan bahawa nilai pulangan fungsi tidak boleh diabaikan, jika tidak, ia akan menyebabkan amaran atau ralat pengkompil untuk mengelakkan akibat berikut: pengecualian yang tidak dimulakan, kebocoran memori dan hasil pengiraan yang salah.

Sintaks terperinci pengisytiharan fungsi C++: daripada analisis sintaks kepada analisis penggunaan standard Sintaks terperinci pengisytiharan fungsi C++: daripada analisis sintaks kepada analisis penggunaan standard Apr 30, 2024 pm 02:54 PM

Sintaks pengisytiharan fungsi C++ ialah: returnTypefunctionName(parameterType1parameterName1,...,parameterTypeNparameterNameN);, dengan returnType ialah jenis return, functionName ialah nama fungsi, parameterType ialah jenis parameter, dan parameterName ialah nama parameter, yang mesti berakhir dengan a koma bertitik.

Panduan langkah demi langkah untuk pengisytiharan fungsi C++: arahan terperinci merangkumi setiap langkah Panduan langkah demi langkah untuk pengisytiharan fungsi C++: arahan terperinci merangkumi setiap langkah May 02, 2024 pm 04:33 PM

Pengisytiharan fungsi memberitahu pengkompil bahawa fungsi wujud tanpa menyediakan badan fungsi. Langkah-langkahnya adalah seperti berikut: tentukan jenis pemulangan fungsi (tidak sah jika tiada nilai pemulangan) tentukan nama fungsi dan isytiharkan parameter fungsi (pilihan, termasuk jenis data dan pengecam) plus koma bertitik

See all articles