,,JavaScript函数IIFE使用详解

,,JavaScript函数IIFE使用详解

本文主要介绍JavaScript函数IIFE的详细使用说明,通过示例代码详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

一、认识函数

javaScritp中的函数

//函数声明语法定义

函数fun1(姓名,年龄){

console.log(姓名','年龄);

}

fun1('艾米',18);//艾米,18岁

//函数表达式定义

var fun2=函数(姓名,年龄){

console.log(姓名','年龄);

}

fun1('艾米',18);//艾米,18岁

带有默认参数的JavaScript函数

/*默认参数*/

函数fun1(姓名,年龄=17) {

console.log(姓名','年龄);

}

fun1('艾米',18);//艾米,18岁

fun1('艾米',' ');//艾米,

fun1('艾米');//艾米,17岁

fun1('Amy ',null);//Amy,null

函数参数的默认值存在一个临时死区。在函数参数默认值的表达式中,没有初始化的参数值不能作为其他参数的默认值。

函数fun2(x,y=x) {

console.log(x,y);

}

fun 2(1);//1 1

函数fun3(x=y) {

console . log(x);

}

fun 3();//ReferenceError: y未定义

javaScript函数的不定参数

//不定参数用来表示不确定参数的个数。

函数fun4(.值){

console . log(values . length);

}

fun4(1,2);//2

fun4(1,2,3,4);//4

函数的结构定义

通过函数构造器创建函数,可以向构造器中传入任意数量的参数,但值得注意的是,传入的最后一个参数将作为函数体,其他参数将作为参数传入函数。不建议使用这种方法定义函数,因为这种语法会导致两次解析代码,第一次解析常规ECMAScript代码,第二次解析构造函数的字符串,影响性能。

Var name=newfunction ('value ',‘函数体’);

var f2=新函数(' n1 ',' n2 ',' return n1 n2');

console.log(f2(1,2));//3

注意:函数是值类型的引入,所以函数名只是函数的指针。当函数名用来给另一个变量名赋值时,只复制一个指针。即当后面的A设置为null时,只消除A中存储的指针,不会影响b调用的函数。

var a=b=函数(值1){

返回值1;

}

a=空;

b(1);

function中的默认对象叫做arguments,类似于数组,但不是数组。这个对象是传递给函数的参数。我们可以通过这个自变量知道这个函数有多少个参数。

函数计数器(){

var sum=0;

for(var I=0;I参数.长度;i ){

sum=参数[I];

}

返回总和;

}

console.log(计数器(199,991,1,2,3,4,5));//1205

console . log(counter());//0

注意:这里的arguments是一个隐式对象,也是在没有声明的函数中。内部函数可以访问外部函数的任何内容,但是它不能直接访问外部函数的参数和this对象。

函数f1() {

控制台. log(arguments . length);

f2=函数(){

控制台. log(arguments . length);

}

返回F2;

}

var f=f1(1,2,3);//3

f();//0

function . Call-调用一个对象的方法,用另一个对象替换当前对象。

/*构造函数*/

函数学生(姓名,年龄){

this.name=name

this.age=年龄;

}

show=function(添加){

console.log(添加':' this.name ',' this . age);

}

//通过new关键字调用构造函数创建一个对象tom

var rose=新生(' rose ',18);

var jack=新生(' jack ',20);

//调用show方法,指定上下文,指定调用对象,这个指向rose,“大家好是参数”

Show.call(rose,'大家好');//大家好:rose,18

show.call(杰克,'你好');//你好:杰克,20岁

调用方法中的参数可以省略。第一个参数指示调用该方法的对象,或者该方法指向谁。如果没有指定,它将指向窗口对象。

Var name='无名';

var年龄=18;//全局变量

show . call();//未定义:未知,18

立即执行表达式函数(IIFE)

级别范围和功能范围

函数计算(){

for(var I=0;i5;i ){

console.log(一);////0,1,2,3,4

}

console.log(一);//5

}

calc();

函数没有块级作用域,所以我后来输出的是5,没有报错。

方法来模拟块级范围。

函数计算(){

//生活

(函数(){

for(var I=0;i5;i ) {

console.log(一);//0,1,2,3,4

}

})();

console.log(一);//报告错误

}

calc();

立即执行表达式或匿名对象。

//调用匿名函数

(函数(){

Console.log('这是函数表达式');

})();

//调用匿名对象

({

姓名:'福',

show: function() {

console . log(this . name);

}

}).show();

console.log({a: 1})。a);

console.log({a: function() {})。a());

各种函数的直接表达式的书写方法

//两种最常用的书写方法

(function(){/* code */}());//推荐的书写方法

(function(){/* code */})();//当然,这个也可以。

//括号和JS的一些运算符(比如=||)等。)可以消除函数表达式和函数声明的歧义。

//在下面的代码中,解析器已经知道一个是表达式,所以会将另一个默认为表达式。

//但是如果两者互换,就会报错

var I=function(){ return 10;}();

true function(){/* code */}();

0,function(){/* code */}();

//如果不怕代码晦涩,也可以选择一元运算符。

!function(){/* code */}();

~ function(){/* code */}();

-function(){/* code */}();

function(){/* code */}();

//你也可以这样做。

new function(){ /* code */}

new(){/* code */}()//带参数

带参数的立即表达式函数

(函数(n){

console . log(n);//100

})(100);

最好在立即表达式函数前加一个分号。

var k=100

(函数(n){

console . log(n);

})(k);

//错误,解释器会认为100是一个函数

var k=100

;(函数(n){

console . log(n);

})(k);

生命的变形

(函数(n){

console . log(n);

//觉得这里有30000个代码

}(100));

如果中间有很长的代码,那么参数100只能在文档的末尾看到。变形的结果:

(函数(表达式){

exp(100);

}(函数(n){

console . log(n);

//觉得这里有30000个代码

}));

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: