定义函数的方式分为两种,一种是函数的声明,另一种是函数表达式(也叫匿名函数)。请看下面的例子:

//第一种:函数的声明 需要函数名
function func() {console.log("我是第一种定义函数的方式");
};//第一种:函数表达式(匿名函数) 需要定义变量接收
const aa = function (){console.log("我是第二种定义函数的方式");
};

在js中常有需要函数自调用的情况,自调用的函数一般都是匿名函数,所以这里也称为匿名函数的自调用(自执行)。

在写自调用函数时,经常出现下面的错误代码:

//下面的代码在编辑器中报错
function () {console.log(111);
}();

原因是function () {console.log(111);}被当成了函数声明,而不是一个函数表达式,让后面的"();"变得孤立,从而产生语法错误。我们要解决的就是让function () {console.log(111);}是一个函数表达式,而不是函数声明语句。

方法1(推荐): 最前面和最后加上小括号(jslint推荐的写法)

// 没有参数的情况
(function () {console.log(111);
}());// 有参数的情况
(function (形参1, 形参2) {// 函数体
}(实参1, 实参2));

需要注意的是: 如果写代码不喜欢在行后加分号,也会出现问题,例如以下代码会报运行错:

var a = 90
(function () {console.log(a);
}());

方法2: function外面加括号

//没有参数的情况
(function () {console.log(222);
})();//有参数的情况
(function (形参1, 形参2) {//函数体
})(实参1, 实参2);

方法3:最前面和最后加上中括号

//没有参数的情况
[function () {console.log(333);
}()];//有参数的情况
[function (形参1, 形参2) {//函数体
}(实参1, 实参2)];

方法4: function前面加运算符 ,常用的是!、-、+

//没有参数的情况
!function () {console.log(444);
}();//有参数的情况
!function (形参1, 形参2) {//函数体
}(实参1, 实参2);

方法5: function前面加void

//没有参数的情况
void function () {console.log(555);
}();//有参数的情况
void function (形参1, 形参2) {//函数体
}(实参1, 实参2);

今天的分享就到这里啦~~

如有错误,欢迎随时雅正。

自调用(自执行)函数的五种写法相关推荐

  1. JavaScript 立即执行函数的两种写法

    (function(str){console.log(str+'欢迎你~');})('行步至春深');(function(str) {console.log(str+'欢迎你~');}('行路易知难' ...

  2. JS立即执行函数的几种写法

    立即执行函数是在函数被声明或者定义后马上执行,其思路就是在函数体后面直接添加括号,如果需要传递参数则直接写在这个括号里面. (function(x){console.log(x)}(1)) 这个结构中 ...

  3. JavaScript函数的几种写法

    几种常见写法 1. 常规写法: 最常规的写法 // 函数的定义 function foo(){alert('常规写法'); }// 函数的调用 foo() 2. 匿名函数写法 给一个变量赋值为一个函数 ...

  4. C语言执行shellcode的五种方法

    //C语言执行shellcode的五种方法 #include <windows.h> #include <stdio.h> //data段可读写 #pragma comment ...

  5. c语言调用linux脚本,C语言执行shellcode的五种方法

    //C语言执行shellcode的五种方法 #include #include //data段可读写 #pragma comment(linker, "/section:.data,RWE& ...

  6. countif函数比较两列不同_Excel中COUNTIF函数的五种必学使用技巧

    原标题:Excel中COUNTIF函数的五种必学使用技巧 院长大大丨图文 教程基于Excel 2016 提起COUNTIF函数,各位小伙伴都知道它的含义是条件计数.但这个简单的计数函数,却可以引申出很 ...

  7. 技术点:connect函数的几种写法及连接方式

    技术点:connect函数的几种写法及连接方式 沭osTT 0.077 2020.07.21 09:38:09 字数 2,494 阅读 2,336 前言 conncet函数是QT中信号和槽机制的实现函 ...

  8. 回字有四种写法,那你知道单例有五种写法吗

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 转自 ...

  9. 【v-on】一个元素绑定多个事件以及一个事件绑定多个函数的两种写法

    本文代码主要讲述了v-on绑定事件函数传参,一个元素绑定多个事件的两种写法,一个事件绑定多个函数的两种写法,修饰符的使用. <!DOCTYPE html> <html lang=&q ...

  10. 【转】回字有四种写法,那你知道单例有五种写法吗

    目录导航 基本介绍 写法介绍 饿汉式 懒汉式 双重检测 内部类 枚举 总结 基本介绍 单例模式(Singleton)应该是大家接触的第一个设计模式,其写法相较于其他的设计模式来说并不复杂,核心理念也非 ...

最新文章

  1. SVN更换修改用户名
  2. yum挂载ftp上无法安装问题
  3. linux指令 find指令详解
  4. 2009 年 5 月 忙碌的一个月
  5. JFreeChart 使用介绍
  6. c语言中的运算符按位或,|按位或运算符
  7. (80)FPGA面试题-请画出序列“1101 “检测状态转移图
  8. 看完性能简报,想不优化好都难!
  9. Pytesseract-windows安装及初步使用
  10. JAVA中String类型的字符替换问题
  11. 浅析DC/DC转换器未来市场的发展前景
  12. 什么是云服务器ECS?
  13. 在PS中如何设计个人logo
  14. 单页面应用与多页面的区别与优缺点
  15. java项目图片保存在服务器,idea2019配置,Javaweb项目实现上传图片保存到本地文件文件夹,Tomcat服务器...
  16. vue FullCalendar使用案例及详解
  17. 水利部水利工程造价系统
  18. wazuh-monitord agent连接监控
  19. 研发团队角色与职责分析
  20. laravel连接mysql连接数过多_Laravel 使用Voyager导致多个数据库连接总是返回默认连接?...

热门文章

  1. JavaScript实现累加和累乘
  2. word被锁定无法编辑怎么处理
  3. 服务器是如何被入侵的
  4. Visual Studio无法定位于动态链接库
  5. 存储单位:位、字节、字符、千字节KB、兆字节MB
  6. java浏览器下载进度条,在浏览器中异步下载文件监听下载进度
  7. 毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?
  8. 2014SQLServer还原数据库
  9. 适配iPhone XR/iPhone XS Max
  10. 短进程优先调度算法c语言spf,短进程优先的调度算法详解