本篇文章给大家带来的内容是关于js的function函数是什么?js中function的用法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Function与函数

Function是JavaScript提供的一种引用类型,通过Function类型创建Function对象。

在JavaScript中,函数也是以对象的形式存在的,每个函数都是一个Function对象。//字面量方式创建函数

var fun =function () {

console.log(100)

};

//函数声明方式创建函数

function fn () {

console.log(200)

};

/* 创建Funtion类型的对象

* var 函数名 = new Function('参数',''函数体)*/

var f = new Function('a','console.log(a)');

f(2);//以函数方式调用

Function类型

Function的apply()方法

Function的apply()方法用于调用一个函数,并且接受指定的this值,以及一个数组作为参数。//定义函数

function fun(value) {

console.log(value)

}

/*

函数的apply()方法——>用于调用一个函数

函数名.apply(thisArg,[argsArray])

thisArg——>可选项,函数运行时使用的this值

argsArray——>可选项,一个数组或者类数组对象,其中的元素作为单独的参数传给Function函数。*/

fun.apply(null,['100']);

Function的call()方法

Function的call()方法用于调用一个函数,并且接受指定的this值,以及参数列表。var fun = function (value,a,b,) {

console.log(value,a,b,)

}

/*

* call()方法调用函数

* 函数名.call(thisArg,arg1,arg2,…)

*

* 和apply()的区别在于提供参数的方式不同

*/

fun.call(null,2,3,4);//2 3 4

Function的bind方法

Function用于创造一个新的函数,称为绑定函数,并且接受指定的this值作为参数,以及参数列表var fun = function (a,b,c) {

console.log( a,b,c)

}

/* bind方法->相当于复制一份当前函数

* 函数名.bind(thisArg,arg1,arg2,...)

* thisArg->当绑定函数被调用时,该属性作为原函数运行时的this指向

* arg->参数。当绑定函数被调用时,这些参数将在实参之前传递给被绑定的方法

* */

var v =fun.bind(null,2,3,4);

v();//2 3 4

没有重载

在其他开发语言中,函数有一种特性叫做重载。就是定义多个同名的函数,但没一个函数接收的参数个数不同,程序会根据调用时传递的实参个数进行判断,具体调用的是哪个函数。

单JavaScript中函数是没有重叠现象的,如果定义多个同名的函数,只有最后一个定义的函数是有效的。

arguments对象

虽然没有重载,但是JavaScript提供了argumengs对象可以模拟函数重载的现象。/*

* argumengs对象

* *该对象存储当前函数中所有的参数(实参)->类数组对象

* *该对象一般用于函数中

* *作用-用于获取当前函数的所有参数

* *arguments.length->函数所有参数(实参)的个数*/

function fun() {

var num = arguments.length;

switch (num){

case 2://参数个数

return arguments[0]+arguments[1];

break;

case 3:

return arguments[0]+arguments[1]+arguments[2];

break;

}

}

console.log(fun(4,5));//9

console.log(fun(4,5,6));//15

递归

在函数体内调用自身的函数被称之为递归函数。在某种意义上来说,递归近似于循环。两者都重复执行相同的代码,都需要一个终止条件来避免无限循环和无限递归。

在一个函数体内,想要调用自身函数,有一下两种方式通过使用自身函数名实现

通过使用arguments对象的callee属性来实现/*//无线递归

function fun() {

console.log('23')

fun()//调用自身函数,实现递归

}

fun()*/

function fn(v) {

console.log(v);

if (v>=5){

return

}

/*fn(v+1)*///使用该方法终止递归当执行下列代码输出时,报错

arguments.callee(v+1)

}

/*fn(0)*/

var f = fn;

fn=null;

f(0);

特殊函数

匿名函数

在JavaScript中,当把函数当做数据使用时,可以不设置名字。匿名函数的两种用法可以将匿名函数作为参数传给其他函数。

可以定一某个匿名函数执行某些一次性任务。

回调函数

当一个函数作为另一个函数的参数时,作为参数的函数被称之为回调函数。//作为另一个函数参数的函数fun->回调函数

var fun = function () {

return 2;

};

function fn(v) {

return v();

}

/*

var result=fn(fun);//函数fun作为函数fn的实参

console.log(result);

*/

//以上代码等同于以下代码

//以下代码中作为参数的函数->匿名回调函数

var f = fn(function(){return 2;});

console.log(f);

自调函数

自调函数就是在定义函数后自行调用/* 自调函数->定义即调用的函数

* 相当于在匿名函数外加了小括号

* 第一对括号->定义函数

* 第二对括号->调用函数*/

(function () {

console.log('23')

})()//23->后边的括号表示调用

作为值的函数

一个函数作为另一个函数的结果进行返回,作为结果返回的函数称之为作为值的函数var one = function(){

return 100;

}

// 作为值的函数 -> 内部函数的一种特殊用法

function fun(){

var v = 100;

// 内部函数

return function(){

return v;

};

}

var result = fun();

// console.log(result);// one函数

// console.log(result());// 100

console.log(fun()());

闭包

作用域链

作用域链就是指局部作用域可以访问它的父级所能访问的作用域var a = 10;// 全局变量

function fun(){

var b = 100;// fun函数作用域的局部变量

// 内部函数

function fn(){

var c = 200;// fn函数作用域的局部变量

// 内部函数

function f(){

var d = 300;// f函数作用域的布局变量

// 调用变量

console.log(a);// 10

console.log(b);// 100

console.log(c);// 200

console.log(d);// 300

}

f();

// 调用变量

// console.log(a);// 10

// console.log(b);// 100

// console.log(c);// 200

// console.log(d);// d is not defined

}

fn();

// 调用变量

// console.log(a);// 10

// console.log(b);// 100

// console.log(c);// c is not defined

// console.log(d);// d is not defined

}

fun();

闭包

当内部任何一个函数被通过一种方式被任何一个外部作用域访问时,就是一个闭包。var n;// 定义变量,但不初始化值

function fun(){// 函数作用域

var v = 100;

// 进行初始化值 -> 一个函数

n = function(){

console.log(v);

}

// n();

}

fun();

n();// 100

闭包的作用提供可享的局部变量

保护共享的局部变量,提专门读写变量的函数

避免全局污染

相关推荐:

php function函数用法,js的function函数是什么?js中function的用法相关推荐

  1. python class用法理解_带你全面理解python中self的用法

    self代表类的实例,而非类. 执行结果如下 从上面的例子中可以很明显的看出,self代表的是类的实例.而self.class则指向类. self不必非写成self 把上面的代码改写一下. 改成thi ...

  2. python中format的用法菜鸟教程-初学者必知的Python中优雅的用法

    枚举 之前我们这样操作: i = 0 for item in iterable: print i, item i += 1 现在我们这样操作: for i, item in enumerate(ite ...

  3. 回调函数举例ajax,通过回调函数的理解来进一步理解ajax及其注意的用法

    一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...

  4. c语言foreach函数,c中foreach的用法

    下面小编就跟你们详细介绍下c中foreach的用法的用法,希望对你们有用. c中foreach的用法的用法如下: c:forEach>用法  博客分类: ?J2EE CC++C#JSPSQL 为 ...

  5. c语言中delete函数用法,c中delete的用法

    c中delete的用法的用法你知道吗?下面小编就跟你们详细介绍下c中delete的用法的用法,希望对你们有用. c中delete的用法的用法如下: "new"是C++的一个关键字, ...

  6. c语言lock函数,c中lock的用法

    下面小编就跟你们详细介绍下c中lock的用法的用法,希望对你们有用. c中lock的用法的用法如下: 本文实例讲述了C#中lock的用法.分享给大家供大家参考.具体分析如下: lock 关键字可以用来 ...

  7. window.onload和jquery中$(function(){ })的区别

    为什么80%的码农都做不了架构师?>>>    今天调试js发现一个问题,我想页面加载完之后才执行我写的js方法,首先我用jqery中$(function(){ })调试了N久都没有 ...

  8. c语言中vector的用法,c中vector的用法

    c中vector的用法的用法你知道吗?下面小编就跟你们详细介绍下c中vector的用法的用法,希望对你们有用. c中vector的用法的用法如下: 1 基本操作 (1)头文件#include. (2) ...

  9. python中with是什么意思,Python中With的用法

    在看Dive Into Python中有关描述文件读写那章节的时候,看到了有关with的用法,查阅下相关资料,记录下来,以备后用. 官方的reference上有关with statement是这样说的 ...

  10. c中session的用法

    c中session的用法你知道吗?下面小编就跟你们详细介绍下c中session的用法,希望对你们有用. c中session的用法如下: Session的基本属性: 一.属性 1.SessionID S ...

最新文章

  1. python到底能用来做啥-Python可以被用来做哪些神奇好玩的事情?
  2. pandas matplotlib 直播数据分析
  3. Zookeeper分布式一致性原理(一):分布式架构
  4. ReactNative学习笔记(一)环境搭建
  5. 三维立体图_原来三维立体图片是这样制作的,学会以后自己也可以设计
  6. mysql数据库1067错误
  7. 关于全局缓存的一种简单实现方法
  8. Java中的自动拆箱装箱(AutoboxingUnboxing)
  9. 计算机如何共享手机网络热点,手机也能做热点 教你如何共享手机3G网
  10. 大年三十整理的asp.net资料!(不得不收藏)
  11. JAVA开发短信验证码系统
  12. Math.random随机数生成公式
  13. Latex/CSDN字母输入对照表
  14. Web安全研究(一)
  15. 编程之美 2.1 求二进制中1的个数
  16. 使用python实现微信小程序自动签到2.0
  17. windows管理右键新建的方法
  18. Week8 :差分约束,拓扑排序和kahn,强连通图和kosaraju
  19. 论文笔记:Editing-Based SQL Query Generation for Cross-Domain Context-Dependent Questions
  20. p元素里面不能嵌套div元素

热门文章

  1. mac mysql 的lb_简单Mysql的lb集群
  2. android版本怎么设置,安卓系统手机怎么用
  3. python能做页面加载动画吗_HTML+CSS实现页面加载(loading)动画效果
  4. C++ #define参数问题
  5. ASN.1编解码:asn1c-ORAN-E2AP
  6. Linux在多线程应用程序中处理信号
  7. java经典笔试题目_java笔试考题(经典).pdf
  8. python简单计算器下载安装到手机_python简单计算器
  9. python字典保存为excel_python将字典列表导出为Excel文件的方法
  10. c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...