博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译]Javascript中的闭包(closures)
阅读量:5127 次
发布时间:2019-06-13

本文共 1906 字,大约阅读时间需要 6 分钟。

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

源地址在此:

https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

 

本次视频中我们将通过例子来理解Javascript中的闭包(closure)

 

什么是闭包(closure)?

 

一个闭包就是一个在函数内部的一个函数,而且该函数能够使用其本身的变量和全局变量.内部函数不止能用其外部包裹的函数的变量,同时也可以使用外部函数的参数.一般来说就是通过在一个函数内部中添加一个新的函数来制造闭包的

 

Javascript闭包例子

function addNumbers(firstNumber, secondNumber) {    var returnValue = "Result is : ";    // This inner function has access to the outer function's variables & parameters    function add()     {        return returnValue + (firstNumber + secondNumber);    }    return add();}var result = addNumbers(10, 20);document.write(result);

Output : Result is : 30

 

以下的代码返回内部函数表达式

function addNumbers(firstNumber, secondNumber) {    var returnValue = "Result is : ";    function add()     {        return returnValue + (firstNumber + secondNumber);    }    // We removed the parentheses. This will return the inner function expression without executing it.   //我们移出了add后面的小阔号,这样就会返回一个内部函数表达式了   return add;}// addFunc will contain add() function (inner function) expression.// addFunc将包含一个add()函数表达式 var addFunc = addNumbers(10, 20);// call the addFunc() function and store the return value in result variable //呼出addFunc()函数,并且把返回的值存储在result这个变量里 var result = addFunc();document.write(result);

返回并且运行内部函数

function addNumbers(firstNumber, secondNumber) {    var returnValue = "Result is : ";    function add()     {        return returnValue + (firstNumber + secondNumber);    }    // We removed the parentheses. This will return the inner function add() expression without executing it.  //我们删除掉了add后面的小括号,这将返回内部函数add()表达式      return add;}// This returns add() function (inner function) definition and executes it. Notice the additonal parentheses.//这一段会返回add()函数的定义并且运行它,注意到(10,20)后面的小括号了吗 var result = addNumbers(10, 20)();document.write(result);

 

转载于:https://www.cnblogs.com/otakuhan/p/7776963.html

你可能感兴趣的文章
springboot No Identifier specified for entity的解决办法
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>