关于JS中的Function类型

概述

Function与函数

函数是这样的一段JavaScript代码,它只定义一次,但可能被执行或调用多次。

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

在JavaScript中,函数也是以对象的形式存在的。

每个函数都是一个Function对象。函数名,本质就是一个变量名,是指向某个Function对象的引用。

Function类型

构造函数

定义的三种方式:

  • 函数定义语句:function fn(){}
    • 函数名被声明提前
    • 不存在效率问题
  • 字面量表达式:var fn = function fn(){}
    • 函数体固定,无法动态执行
    • 不存在效率问题
  • Function类型定义:var fn = new Function()
    • 函数体是字符串,可以动态执行
    • 效率低

Function的length方法

  • 获取函数的参数(形参)的个数

Function的apply()方法

	概念:用于调用一个函数,并且接受指定的this值,以及一个数组作为参数。
	
	语法:函数名.apply(thisArg,[argsArray])
	thisArg参数:可选项,在func函数运行时使用的this值。
	argsArray参数:可选项,一个数组或者类数组对象,其中的数组元素将作为单独的参数传给func函数。也可以使用arguements对象作为该参数。
	返回值:调用该函数的返回值。

Function的call()方法

	概念:用于调用一个函数,并且接收this值作为参数,以及参数列表
	语法:函数名.call(thisArg,arg1,arg2,...)
	thisArg参数:在func函数运行时使用的this值
	arg1,arg2,...参数:指定的参数列表
	返回值:调用该函数的返回结果

Function的bind()方法

	用于创建一个新的函数(称为绑定函数),并且接受指定的this值作为参数,以及参数列表
	语法:fun.bind(thisArg[,arg1[,arg2[,...]]])
	thisArg参数:当绑定函数被调用时,该参数会作为函数运行时的this指向。
	arg1,atg2,...参数:当绑定函数被调用时,这些参数将至于实参之前传递给被绑定的方法
	返回值:返回由指定的this值和初始化参数改造的原函数拷贝

JS没有重载

	JS中没有函数的重载

递归

	程序调用自身的技巧称为递归,在JS中使用arguments.callee();调用自身。

特殊函数

匿名函数
	JS可将函数作为数据使用。作为函数本体,它像普通的数据一样,不一定要有名字。默认名字的函数被称为匿名函数。
	
	两种用法:
		可以将匿名函数作为参数传递给其他函数。这样,接收方函数就能利用所传递的函数来完成某些事情
		可以定义某个匿名函数来执行某些一次性任务
回调函数
	当一个函数作为参数传递给另一个函数时,作为参数的函数被称为回调函数
	
	优势:
		1.匿名回调函数节省了全局命名空间
        2.将私有的数据内容开放给指定位置使用(仅仅)
		3.虽然可以使用私有数据,但不清楚来源 - 封装
	回调陷阱:
		1.外层函数的参数是另一个函数 - 回调函数
		2.回调函数的参数又是另一个函数 - 回调函数
		3.回调函数的参数还是另一个函数 - 回调函数
		........
自调函数
	所谓自调函数就是定义函数后自行调用
	
	作用:用于执行一次性的逻辑任务
	
	应用:作为整体逻辑代码的外层结构
作为值的函数
	将一个函数作为另一个函数的结果进行返回,作为结果返回的函数称之为作为值的函数

闭包

概念:
	JS允许函数嵌套,并且内部函数可以访问定义在外部函数的所有变量和函数,以及外部函数能访问的所有变量和函数。
	但是,外部函数却不能访问定义在内部函数中的变量和函数。
	
	当内部函数以及某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。
	闭包就是词法表示包括不必计算的变量的函数,也就是说,该函式能使用函数外定义的变量。
作用:
	1.提供可共享的局部变量
	2.保护共享的局部变量。提供专门的读写变量的函数
	3.避免全局污染
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript,函数(Function)是一种引用类型。通过使用函数引用类型,我们可以将函数保存为变量,将其作为参数传递给其他函数,或者从函数返回它。 函数引用类型的一个常见用例是将函数作为参数传递给其他函数。这在高阶函数(Higher-order function非常常见。举个例子,假设我们有一个处理数组的函数,可以接受一个回调函数作为参数,并在遍历数组时调用该回调函数。 下面是一个简单的例子: ```javascript // 定义处理数组的函数,并接受一个回调函数作为参数 function processArray(arr, callback) { for (let i = 0; i < arr.length; i++) { callback(arr[i]); } } // 回调函数,用于打印每个数组元素 function printElement(element) { console.log(element); } // 定义一个数组 const myArray = [1, 2, 3, 4, 5]; // 调用processArray函数,传入myArray和printElement函数作为参数 processArray(myArray, printElement); ``` 在这个例子,`processArray`函数接受一个数组和一个回调函数作为参数。它会遍历数组,并将每个元素作为参数调用回调函数。`printElement`函数是一个回调函数,它在控制台打印每个数组元素。通过将`printElement`函数作为参数传递给`processArray`函数,我们可以实现打印数组的功能。 这个例子展示了如何使用函数引用类型来实现回调机制。函数引用类型的函数可以被保存并传递给其他函数,从而实现更灵活和可配置的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值