JS 嵌套函数

转载请注明出处:https://blog.youkuaiyun.com/nk1212582/article/details/81178297

定义

JS可以在函数体中定义新的函数,这个新的函数称之为嵌套函数

代码实例

function isSumLess(arrA, arrB){
	function sum(arr){
		var s=0;
		for(var i=0; i<arr.length; i++)
			s += arr[i]
		return s
	}
	return sum(arrA) < sum(arrB)
}

其中函数sum就是嵌套函数

嵌套函数的作用域

嵌套函数的作用域只在函数体内

比如在上面实例中,函数sum只能在函数isSumLess内发挥作用。

在isSumLess外使用sum,就会产生错误Uncaught ReferenceError: sum is not defined

### JavaScript 中嵌套函数的使用方法与特性 #### 函数内部定义其他函数 在 JavaScript 中,可以在一个函数体内定义另一个函数。这种结构允许内层函数访问外层函数中的变量以及参数。 ```javascript function outerFunction(outerVariable) { function innerFunction(innerVariable) { console.log('Outer Variable:', outerVariable); // 可以访问外部函数的参数和局部变量[^1] console.log('Inner Variable:', innerVariable); } innerFunction('inner arg'); } outerFunction('outer arg'); ``` #### 形成闭包 当内部函数被返回给调用者或者作为对象的方法保存下来之后,即使创建它的那个外部函数已经执行完毕并退出了栈帧,该内部函数仍然能够记住它所处的作用域环境,并可以继续操作这些数据。这就是所谓的闭包现象。 ```javascript function createCounter() { let count = 0; return function incrementAndLog() { count++; console.log(count); }; } const counter = createCounter(); counter(); // 输出: 1 counter(); // 输出: 2 ``` #### 提升私有成员保护能力 由于只有在外部函数内的代码才能直接触及到那些声明于其中但未暴露出去的名字空间下的实体(比如变量),因此这提供了一种实现模块化设计模式下封装机制的方式,在一定程度上增强了程序的安全性和可维护性。 ```javascript function makePrivateDataHolder(initialValue) { const privateData = initialValue; return { getData: () => privateData, setData: (newValue) => { if(typeof newValue === 'number') { privateData = newValue; } else { throw new Error('Invalid data type.'); } }, }; } const holder = makePrivateDataHolder(42); console.log(holder.getData()); // 输出: 42 holder.setData(88); console.log(holder.getData()); // 输出: 88 try { holder.setData('not a number'); // 抛出异常 } catch(e) { console.error(e.message); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零幺_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值