Bolehkah JavaScript tidak menulis nama fungsi?

青灯夜游
Lepaskan: 2022-10-14 16:32:08
asal
1662 orang telah melayarinya

Fungsi JavaScript tidak perlu menulis nama fungsi; fungsi tanpa nama dipanggil "fungsi tanpa nama", yang hanya mengandungi kata kunci fungsi, parameter dan badan fungsi, dan sintaksnya ialah "fungsi ([ args]){statements}" . Fungsi fungsi tanpa nama: 1. Penutupan boleh direalisasikan melalui fungsi tanpa nama 2. Mensimulasikan skop peringkat blok dan mengurangkan pembolehubah global.

Bolehkah JavaScript tidak menulis nama fungsi?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Fungsi Javascript tidak perlu menulis nama fungsi Fungsi tanpa nama dipanggil "fungsi tanpa nama".

Fungsi tanpa nama: Fungsi tanpa nama sebenar.

Fungsi tanpa nama hanya mengandungi kata kunci fungsi, parameter dan badan fungsi. Penggunaan khusus adalah seperti berikut:

function ([args]) {
statements
}
Salin selepas log masuk

Mula-mula kami mengisytiharkan fungsi normal:

//声明一个普通函数,函数的名字叫fn
function fn(){
    console.log("web-chubby");
}
Salin selepas log masuk

Kemudian alih keluar nama fungsi untuk menjadi fungsi tanpa nama:

//匿名函数,咦,运行时,你会发现报错啦!
function (){
    console.log("web-chubby");
}
Salin selepas log masuk

kepada Oleh itu, anda akan mendapati bahawa apabila anda menjalankan fungsi tanpa nama sahaja, ralat dilaporkan kerana ia tidak memenuhi keperluan sintaks!

Bolehkah JavaScript tidak menulis nama fungsi?

Penyelesaian: Hanya bungkus kurungan di sekeliling fungsi tanpa nama untuk menjadikannya ungkapan:

//匿名函数在其它应用场景括号可以省略
(function (){
    //由于没有执行该匿名函数,所以不会执行匿名函数体内的语句。
    console.log("web-chubby");
})
Salin selepas log masuk

Bagaimana untuk melaksanakan dan menggunakan fungsi tanpa nama?

1. Jalankan fungsi tanpa nama

Jika anda perlu melaksanakan fungsi tanpa nama, tambahkan kurungan selepas fungsi tanpa nama, iaitu, laksanakan fungsi dengan segera

  • Tanda kurung hanya membalut fungsi tanpa nama diikuti dengan kurungan pelaksanaan (biasa digunakan)

(function () {
      alert('匿名函数执行方式一')
})();
Salin selepas log masuk
  • kurungan Balut fungsi tanpa nama dan kurungan yang melaksanakan fungsi tanpa nama untuk membentuk ungkapan

2. Bagaimana untuk menghantar parameter kepada fungsi tanpa nama

dan parameter biasa lain Begitu juga, tulis sahaja parameter terus dalam kurungan:

 (function (m) {
      alert(m)
    }('这是匿名函数传进来的参数'));
Salin selepas log masuk

Aplikasi fungsi tanpa nama

  • Ikat kaedah masa Peristiwa

<input type="button" value="点我啊!" id="sub">
<script>
    //获得按钮元素
    var sub=document.querySelector("#sub");
    //给按钮增加点击事件。
    sub.onclick=function(){
        alert("当点击按钮时会执行到我哦!");
    }
</script>
Salin selepas log masuk
  • Ungkapan fungsi memberikan fungsi tanpa nama kepada pembolehubah

//将匿名函数赋值给变量fn。
var fn=function(){
    return "我是一只小小小小留下,怎么飞也飞不高!"
}
//调用方式与调用普通函数一样
console.log(fn());//我是一只小小小小留下,怎么飞也飞不高!
Salin selepas log masuk
  • Fungsi atribut dalam objek

var obj={
    name:"web-chubby",
    age:18,
    fn:function(){
        return "我叫"+this.name+"今年"+this.age+"岁了!";
    }
};
console.log(obj.fn());//我叫web-chubby今年18岁了!
Salin selepas log masuk
  • Fungsi panggil balik, mengambil fungsi tanpa nama sebagai salah satu parameternya

 //过滤出值为9的值
    let numArr = [1, 5, 9, 10]
    let newArr = numArr.filter(function (item) {
      if (item !== 9) {
        return item
      }
    });
Salin selepas log masuk
  • Fungsi mengembalikan nilai, iaitu fungsi digunakan sebagai nilai pulangan

//将匿名函数作为返回值
function fn(){
    //返回匿名函数
    return function(){
        return "web-chubby";
    }
}
//调用匿名函数
console.log(fn()());//web-chubby
//或
var box=fn();
console.log(box());//web-chubby
Salin selepas log masuk

Meniru peringkat blok kesan Domain

skop peringkat blok, kadangkala dipanggil skop peribadi. Tiada skop peringkat blok dalam JavaScript Contohnya:

if(1==1){//条件成立,执行if代码块语句。
    var a=12;//a为全局变量
}
console.log(a);//12
for(var i=0;i<3;i++){
    console.log(i);
}
console.log(i);//4
Salin selepas log masuk

if(){}for(){}, dsb. tidak mempunyai skopnya sendiri. Jika ia keluar dari skopnya sendiri, pembolehubah yang diisytiharkan akan dimusnahkan serta-merta. Tetapi kita boleh mensimulasikan skop peringkat blok melalui fungsi tanpa nama:

(function(){
    //这里是我们的块级作用域(私有作用域)
})();
Salin selepas log masuk

Cuba skop peringkat blok:

function fn(){
    (function(){
        var la="啦啦啦!";
    })();
    console.log(la);//报错---la is not defined
}
fn();
Salin selepas log masuk

Peranan fungsi tanpa nama:

1. Penutupan boleh dilaksanakan melalui fungsi tanpa nama. Pengenalan pantas di sini: penutupan ialah fungsi yang boleh mengakses pembolehubah yang ditakrifkan dalam skop fungsi. Untuk membuat penutupan, anda selalunya perlu menggunakan fungsi tanpa nama.

2. Simulasikan skop peringkat blok dan kurangkan pembolehubah global. Selepas melaksanakan fungsi tanpa nama, pembolehubah sepadan yang disimpan dalam memori akan dimusnahkan, sekali gus menjimatkan memori. Tambahan pula, dalam projek pembangunan berbilang orang berskala besar, menggunakan skop peringkat blok akan mengurangkan masalah konflik penamaan, dengan itu mengelakkan akibat bencana. Pembangun tidak perlu lagi bimbang tentang mengacaukan skop global.

[Cadangan berkaitan: tutorial pembelajaran javascript]

Atas ialah kandungan terperinci Bolehkah JavaScript tidak menulis nama fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan