18910140161

Javascript函数

顺晟科技

2021-06-16 10:58:00

134

一、函数的定义

功能保留字功能

函数名可以省略,你可以用它的名字递归调用自己

参数

函数体,函数可以有或没有返回语句。return语句可以停止函数运行,并将表达式的值返回给函数调用方。如果不包含return语句,函数只执行函数体中的每一条语句,然后将未定义的调用者返回给函数。

示例:

函数add(num1,num 2){ return num 1 num 2;}//匿名函数var add=function (num1,num 2){ return num 1 num 2;}//递归调用函数阶乘(x){ if(x=1){ return 1;} else { return x *阶乘(x-1);}}

二、匿名函数、函数的调用

匿名函数是没有名字的函数,也叫lambda函数。

//函数声明函数名(arg0,arg1,arg 2){//做点什么}//函数表达式var函数名=function (arg0,arg1,arg 2){//做点什么}

以上两个例子在逻辑上是等价的,但两者之间还是有些区别的。函数声明和函数表达式的主要区别在于,前者会在代码执行之前加载到作用域中,而后者直到代码执行到那一行才会被定义。另一个重要的区别是,函数声明为函数指定名称,而函数表达式创建匿名函数,然后将匿名函数指定给变量。

三、函数的调用

3.1 方法调用模式

当一个函数被保存为一个对象的属性时,我们称之为方法。这是在调用方法时绑定到对象的。

var o={ value: 0,Inc Inc : function(Inc){ this . value=type of Inc===' number '?Inc : 1;}};o . increment();console . log(o . value);//1o . increment(2);console . log(o . value);//3o . increment(5);console . log(o . value);//8o . increment(' test ');console . log(o . value);//9

方法可以使用它来访问对象,因此它可以从对象中获取值或修改对象。通过这种方式获取其上下文的方法称为公共方法。

3.2 函数调用模式

var sum=add(2,4);//sum为6

当一个函数在这种模式下被调用时,它被绑定到一个全局对象。解决方案:为这个方法定义一个变量,赋给这个,这是一个内部函数,可以通过这个变量来访问。

//函数调用模式var add=function (num1,num 2){ return num 1 num 2;} o . double=function(){ var _ self=this;var op=function(){ _ self . value=add(_ self . value,_ self . value);};op();} o . double();console . log(o . value);//18

3.3 构造函数调用模式

//创建构造函数var person=function (name) {this。name=name} person . prototype . get _ name=function(){ return this . name;} var driver=new Person(' jack ');console . log(driver . get _ name());

3.4 apply模式

apply方法构建参数数组并调用函数。apply方法接收两个参数,个是绑定到此的值,第二个是参数数组。

var arr=[11,12];var sum=add.apply(null,arr);console . log(sum);//23var老师={ name : Lucy };var name=person . prototype . get _ name . apply(教师);console.log(名称);//露西

四、this 的工作原理

JavaScript处理这个问题的机制与其他语言完全不同。在五种不同的情况下,这指向不同的东西。

4.1 全局范围内

这个;

当在全范围内使用时,它将指向全局对象。

4.2 函数调用

foo();

这里也指向全局对象。

4.3 调用构造函数

new foo();

如果一个函数倾向于与new关键字一起使用,我们称之为构造函数。在函数内部,这指向新创建的对象。

4.4 显式的设置 this

function foo(a,b,c){ } var bar={ };foo.apply(bar,[1,2,3]);//数组将展开如下:foo.call(bar,1,2,3);//传递给foo的参数有:a=1,b=2,c=3

当在Function.prototype上使用调用或应用方法时,函数中的这个参数将被显式设置为函数调用的个参数。

因此,函数调用的规则在上面的例子中不再适用,这在foo函数中设置为bar。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航