当前位置: 首页 > news >正文

匿名函数自调用

看源码的时候经常出现函数名前加!的自调用形式,其中的逻辑究竟是什么呢?

一、函数声明

函数声明是 JavaScript 中定义函数的一种方式,它允许我们定义一个命名函数并在程序中其他地方调用这个函数。

// 函数声明
function sayHello() {
  console.log("Hello, World!");
}

二、函数表达式(Function Expression)

函数表达式是将一个函数赋值给一个变量或常量。函数表达式通常是匿名的,也可以是命名的。

匿名函数表达式

// 匿名函数表达式
const sayHello = function() {
  console.log("Hello, World!");
};

sayHello();  // 输出:Hello, World!

具名函数表达式

const greet = function greeting() {
  console.log("Hello!");
  // 你可以在函数内部使用函数名递归调用自己
  // greeting();
};

greet();  // 输出:Hello!

三、函数调用(Function Invocation)

函数调用是指执行一个已经定义好的函数。函数调用的方式取决于函数的定义类型(声明或表达式)以及调用时的上下文。

具名函数调用

// 函数声明
function sayHello() {
  console.log("Hello, World!");
}

// 可以在函数声明之前调用它(由于函数声明提升)
sayHello();  // 输出:Hello, World!

匿名函数调用

添加括号来调用匿名函数:

(function () {
    console.log('success');
})();//success
(function () {
    console.log('success');
})();//success

()让一个函数声明语句变成了一个表达式

所以,只要能让一个函数声明语句变成了一个表达式,匿名函数便被解析器正确识别。那么以下方式也都是可以的:

var i = (function () {
    console.log('success');
})(); // success
1 &&
    (function () {
        console.log('success');
    })(); // success
1,
    (function () {
        console.log('success');
    })(); // success
!(function () {
    console.log('success');
})();

相关文章:

  • Draw.io 全面解析与竞品分析:图表绘制工具的深度对比
  • 这是一份简单优雅的Prompt Engineering教程
  • 25.4.6学习总结
  • C++ 中为什么构造函数不需要实现虚函数,而析构函数需要?
  • 线程同步的学习与应用
  • 设计模式简述(八)中介者模式
  • 从扩展黎曼泽塔函数构造物质和时空的结构-15
  • swift-11-init、deinit、可选链、协议、元类型
  • STM32F103C8T6单片机的起始点:使用GPIO输出点亮我们的第一个小灯(HAL库版本)
  • 【简历全景认知】简历的历史演变与当代定位:从羊皮卷到算法博弈的艺术
  • 设计模式简述(十)责任链模式
  • 请问你怎么看待测试,指导哪些测试的类型,有用过哪些测试方法?
  • Nmap全脚本使用指南!NSE脚本全详细教程!Kali Linux教程!(六)
  • 人脸识别系统(人脸识别、前后端交互、Python项目)
  • 初识数据结构——Java集合框架解析:List与ArrayList的完美结合
  • 如何判断JVM中类和其他类是不是同一个类
  • Window进程监控工具,能自动重启进程和卡死检测
  • 【Linux篇】基础IO - 文件描述符的引入
  • Spring 中的 @Autowired 和 @Resource
  • 用Scala玩转Flink:从零构建实时处理系统
  • 网站商城怎么做app/百度精准搜索
  • 携程旅游网官方网站 做攻略/竞价推广托管公司价格
  • 动力节点java培训怎么样/广州seo关键词
  • 网站开发页面设计过程/网络营销知名企业
  • seo关键词优化公司官网/东莞百度seo
  • dw2019怎么做网站/深圳的seo网站排名优化