JS:立即执行函数笔记
转载立即执行函数
IIFE: immediately invoked function expression
最大的特点是:立即执行,执行完之后立即销毁
1. 语法
(function() {} ());
(function() {})();
两种都可以, W3C建议用第一种
2. 特点
a.参数(形参,实参)
(function(a, b){
console.log(a + b)
}(1, 5));
a,b是形参, 1,5是实参
b.保存立即执行函数的返回值,只需将其return,然后用变量储存起来
var num= (function(a, b){
return a + b;
}(1, 5));
console.log(num); // 6
c. 立即执行函数的函数名,有没有无所谓。
因为立即执行函数在执行完之后会被立即销毁,所以函数名可以没有,看下面的例子:
var num= (function add(a, b){
return a + b;
}(1, 5));
console.log(add); // Uncaught ReferenceError: add is not defined
var num= (function (){ console.log(1) }()); console.log(num); //输出结果 1 和undefined, 说明函数已经被执行,而且执行完之后被销毁了
d. (.....) 无论括号里面是什么都回被认为是表达式
(function(){}), 括号里面的函数会被当成表达式
(1), 1会被当成表达式
(1+2), 1+2会被当成表达式
5. 只有表达式才能被执行函数执行,在表达式后面加括号就表示被执行了
(function(){} () // 这个括号表示执行)
var test = function() { console.log(1)}(); //可以执行,因为这是函数表达式
function test(a) { console.log(a) }() //会报语法错误,因为test是函数声明,不是函数表达式
6.将函数声明转换成函数表达式的方法:在函数表达式前面加 + - && || !
!function test(a) { console.log(a) }();
undefined || function test(a) { console.log(a) }();
7. 函数声明加立即执行()发不会报错的情况:在执行符号后面加上参数
function test(a) { console.log(a) }(1);
这种情况不会报错,因为上面的情况会被浏览器解析成:
function test(a) { console.log(a) }
(1)
一个函数声明加一个函数表达式;
表达式还有一种特殊情况:
(1, 2) //这种情况不会报错,浏览器会认最后一个,后面的东西, 最后一个,后面必须要有东西,不然会报错
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
js 立即执行函数JS脚本 JS开发
-
JS之立即执行函数
一。
立即执行函数 JS 函数声明 匿名函数 -
mysql函数笔记
mysql的日期,字符串,运算函数,特殊查询,类型转换
字符串 字段 mysql -
php函数笔记
紧张的期末考试终于结束了,暑假开始了,我又重...
php 默认值 全局变量 作用域 局部变量 -
Javascript(笔记08) - 函数 - 立即执行函数
Javascipt 立即执行函数
javascript 作用域 立即执行函数 -
js 立即执行函数定义方法
js 立即执行函数定义方法
JS 立即执行函数定义 方法 html javascript