立即执行函数(1)

立即执行函数:

     定义:此类函数没有声明,在一次执行过后即释放。适合做初始化工作。

针对初始化功能的函数

立即执行函数除了执行完立即被释放之外,与其他函数没有任何区别!

初始化函数:function a(){

                   .......此处省略10万行代码

              }//该函数只被执行过一次

(function (){
				var a = 123;
				var b = 234;
				console.log(a + b);
				
			}())//357
(function abc(){
				var a = 123;
				var b = 234;
				console.log(a + b);
				
			}());

在控制台执行abc,你会发现,这是javascript给咱们提供的唯一 一个能立即销毁函数的东西

(function abc(a,b,c){   			//传形参
				console.log(a + b + c);
			}(1,2,3));		//传实参

也可以有返回值,一个函数如果没有返回值有个啥用啊!!

var num = (function abc(a,b,c){
				var d = a + b + c;
				return d;
			}(1,2,3));

立即执行函数并不是javascript特意做出来的,它是人们后来发现的,他像一个float一样。只是利用了一个小括号的特点

官方给出了两种立即执行函数的写法:1.(function(){}())2.(function (){})()。W3C建议第一种

function test (){
				var a = 123;
			}()

//语法解析错误,低级错误,错的不能再错了。

这样就能执行:

function test (){
				var a = 123;
			}
			test();

只有表达式才能被执行符号执行!!

var test = function test (){
				console.log("a");
			}()//a

能被执行符号执行的表达式,这个函数的名字就会被自动忽略!!

var test = function test (){

                   console.log("a");

              }();//

+function test(){              //+ - (正负)||  &&  !

                   console.log("a");

              }();//

(function test(){

                   console.log("a");

              })()//

(function test(){

                   console.log("a");

              }())//先看最外面的(),会把里面的东西变成表达式,变成表达式之后,然后在被里面的括号执行。

阿里巴巴:

function test(a,b,c,d){
				console.log(a+b+c+d);
			}(1,2,3,4);

理论上肯定不行,但是只写()系统会认为必须是执行符号,没有其他方式可以理解了。但是你要是这样写(1,2,3,4),系统也知道不能当成执行符号,执行符号你不就报错了吗,然后系统一看,那我尽量别让你报错了,我给你找找能不能识别成其他的方式,他就会认为是这样写的:

function test(a,b,c,d){
				console.log(a+b+c+d);
			}


(1,2,3,4);

猜你喜欢

转载自blog.csdn.net/hdq1745/article/details/81207692