自调用(自执行)函数的五种写法
定义函数的方式分为两种,一种是函数的声明,另一种是函数表达式(也叫匿名函数)。请看下面的例子:
//第一种:函数的声明 需要函数名
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);
今天的分享就到这里啦~~
如有错误,欢迎随时雅正。
自调用(自执行)函数的五种写法相关推荐
- JavaScript 立即执行函数的两种写法
(function(str){console.log(str+'欢迎你~');})('行步至春深');(function(str) {console.log(str+'欢迎你~');}('行路易知难' ...
- JS立即执行函数的几种写法
立即执行函数是在函数被声明或者定义后马上执行,其思路就是在函数体后面直接添加括号,如果需要传递参数则直接写在这个括号里面. (function(x){console.log(x)}(1)) 这个结构中 ...
- JavaScript函数的几种写法
几种常见写法 1. 常规写法: 最常规的写法 // 函数的定义 function foo(){alert('常规写法'); }// 函数的调用 foo() 2. 匿名函数写法 给一个变量赋值为一个函数 ...
- C语言执行shellcode的五种方法
//C语言执行shellcode的五种方法 #include <windows.h> #include <stdio.h> //data段可读写 #pragma comment ...
- c语言调用linux脚本,C语言执行shellcode的五种方法
//C语言执行shellcode的五种方法 #include #include //data段可读写 #pragma comment(linker, "/section:.data,RWE& ...
- countif函数比较两列不同_Excel中COUNTIF函数的五种必学使用技巧
原标题:Excel中COUNTIF函数的五种必学使用技巧 院长大大丨图文 教程基于Excel 2016 提起COUNTIF函数,各位小伙伴都知道它的含义是条件计数.但这个简单的计数函数,却可以引申出很 ...
- 技术点:connect函数的几种写法及连接方式
技术点:connect函数的几种写法及连接方式 沭osTT 0.077 2020.07.21 09:38:09 字数 2,494 阅读 2,336 前言 conncet函数是QT中信号和槽机制的实现函 ...
- 回字有四种写法,那你知道单例有五种写法吗
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 转自 ...
- 【v-on】一个元素绑定多个事件以及一个事件绑定多个函数的两种写法
本文代码主要讲述了v-on绑定事件函数传参,一个元素绑定多个事件的两种写法,一个事件绑定多个函数的两种写法,修饰符的使用. <!DOCTYPE html> <html lang=&q ...
- 【转】回字有四种写法,那你知道单例有五种写法吗
目录导航 基本介绍 写法介绍 饿汉式 懒汉式 双重检测 内部类 枚举 总结 基本介绍 单例模式(Singleton)应该是大家接触的第一个设计模式,其写法相较于其他的设计模式来说并不复杂,核心理念也非 ...
最新文章
- SVN更换修改用户名
- yum挂载ftp上无法安装问题
- linux指令 find指令详解
- 2009 年 5 月 忙碌的一个月
- JFreeChart 使用介绍
- c语言中的运算符按位或,|按位或运算符
- (80)FPGA面试题-请画出序列“1101 “检测状态转移图
- 看完性能简报,想不优化好都难!
- Pytesseract-windows安装及初步使用
- JAVA中String类型的字符替换问题
- 浅析DC/DC转换器未来市场的发展前景
- 什么是云服务器ECS?
- 在PS中如何设计个人logo
- 单页面应用与多页面的区别与优缺点
- java项目图片保存在服务器,idea2019配置,Javaweb项目实现上传图片保存到本地文件文件夹,Tomcat服务器...
- vue FullCalendar使用案例及详解
- 水利部水利工程造价系统
- wazuh-monitord agent连接监控
- 研发团队角色与职责分析
- laravel连接mysql连接数过多_Laravel 使用Voyager导致多个数据库连接总是返回默认连接?...