`

一个Javascript问题

 
阅读更多

var 变量=函数,不加括号,到底是什么意思。。

本来能理解成 “变量创建了一个指向函数的指针”。

看了一个递归的例子,我又迷途了,代码:
function test(num){
    if(num<=1){
    return 1
    }else{
        return num*test(num-1)
    }
}
var a=test;
test=null;
alert(a(5));//出错。


这个例子是书上的,结果当然是出错,但是我想如果把最后的5改成1的话,结果就运行起来了

alert(a(1));//显示1

按照我的理解,变量a只是一个指向函数test的指针,既然函数test已经不见了,那变量a也不可能运行的起来了。。
而这句alert(a(1))却说明了,变量a执行了一次函数,只是没有给函数传递参数而已....

另外的理解:

1.函数也是对象,test实际上是这个对象在栈里的地址值,给a赋值的时候拷贝了一份这个地址值给a,test=null,让test指向null不再指向那个函数,alert(a(1)),执行了函数并且传递了参数,只是函数只执行了第一个if分支所以没报错。
2.由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
分享到:
评论

相关推荐

    JavaScript 进阶问题列表,包含完整答案

    《JavaScript进阶问题列表》是一份全面覆盖JavaScript高级知识点的问题集合,旨在帮助开发者深入理解JavaScript语言的各个方面,并掌握进阶技巧。每个问题都提供了详细的答案和解析,涵盖了JavaScript的高级特性、...

    html+JavaScript实现的一个小型的商城

    在本项目中,"html+JavaScript实现的一个小型的商城"是一个典型的前端开发实践,主要运用了HTML和JavaScript这两种核心技术来构建一个简易的在线购物平台。这个实训项目旨在帮助学习者理解网页开发的基本流程,以及...

    600个javascript实例

    JavaScript,一种广泛应用于网页和...实践中遇到的每一个问题都是一次学习的机会,而解决这些问题的过程将帮助你成长为一名熟练的JavaScript开发者。记得理论结合实践,不断尝试,才能更好地掌握这门动态且灵活的语言。

    Html+CSS +Javascript实现的一个很炫个人主页网页

    通过使用Html、CSS以及Javascript这三种核心技术,可以构建出一个极具个人特色的炫酷个人主页,而这样的技术实现,既需要网页设计师的创意灵感,也需要前端开发者的技术支持。 首先,HTML是构建网页的基础。它通过...

    head first JavaScript源码

    原型链是JavaScript实现继承的关键机制,它允许一个对象访问另一个对象的属性和方法。 事件处理和DOM操作也是JavaScript在网页交互中的关键部分。通过监听和触发事件,JavaScript可以响应用户的操作,如点击按钮、...

    JavaScript设计模式+JavaScript模式+JavaScript异步编程

    - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂模式:创建对象时避免使用new操作符,提供更灵活的实例化过程。 - 观察者模式:定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,...

    JavaScript权威指南(JavaScript犀牛书一本)

    3. **作用域和闭包**:解析了JavaScript中的变量作用域规则以及闭包的概念,这是解决许多复杂问题的基础。 4. **异步编程**:详述了事件循环、回调函数、Promise、async/await等异步处理方式,帮助开发者应对...

    JavaScript标准参考教程

    JavaScript的性能强大,它是一种开放的语言,社区支持广泛,这为开发者提供了一个良好的学习和交流环境。 JavaScript的发展历程同样重要。它诞生于互联网早期,最初被称为LiveScript,之后改名为JavaScript,并随着...

    Effective JavaScript 编写高质量JavaScript代码的68个有效方法1

    《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》是David Herman撰写的一本JavaScript编程指南,该书基于作者在Ecma的JavaScript标准化委员会的工作经验,深入探讨了JavaScript的内部工作机制、...

    VS2015安装证书,JavaScript_ProjectSystem.msi,JavaScript_LanguageService.msi

    解决这个问题的方法通常是重新下载一个完整且未经篡改的ISO镜像文件,并确保在安装前验证其完整性,例如通过校验MD5或SHA1哈希值。 接下来,我们来看"JavaScript_ProjectSystem.msi"和"JavaScript_LanguageService....

    javascript作业题答案

    事件处理是JavaScript另一个关键领域,它使得用户与网页进行互动成为可能。点击按钮、提交表单、滚动页面等都可以触发JavaScript事件。事件监听器如`addEventListener()`用于注册事件处理函数,当特定事件发生时,...

    javascript混淆,javascript压缩,javascript加密软件

    例如,`hdjso.exe`可能是一个用于JavaScript混淆的工具,它可以将源代码转换成难以理解的形式。 **JavaScript压缩**: JavaScript压缩的目的是减少代码的大小,从而提高网页加载速度和降低服务器带宽消耗。压缩通常...

    javascript百炼成仙 第一章 掌握JavaScript基础01 初入宗门.pdf

    流程控制是编程的另一个重要方面,它涉及条件语句和循环,这些控制结构让程序能够做出判断并重复执行任务。叶小凡在千鹤派中的每一步进阶都伴随着对这些控制结构的深入理解和运用。他的故事告诉我们,只有通过实际...

    javascript

    JavaScript可以提供一个函数来清除购物车中的所有商品,并相应地更新界面。 7. 原型与继承:在“购物车原型.html”可能涉及到JavaScript的面向对象编程。在JavaScript中,原型链允许对象间共享属性和方法,从而实现...

    javascript 经典实例大全一

    总的来说,"JavaScript 经典实例大全一"是一个宝贵的资源库,对于初学者和有经验的开发者来说都极具价值。它可以帮助开发者快速提升JavaScript技能,理解并运用到实际的网页开发工作中,创造出更富吸引力和用户体验...

    JavaScript 教程chm+JavaScript Helpchm+JavaScript源代码集chm

    "JavaScript教程.chm"可能是一个全面的JavaScript入门教程,涵盖了语言的基础到高级特性。你可以从中学习变量、数据类型、控制结构(如if语句和循环)、函数、对象、数组、字符串处理、事件处理、DOM操作等基础知识...

    3000 个javascript 代码集合基本覆盖所有方面

    这个3000个JavaScript代码集合涵盖了JavaScript的各个方面,旨在提供一个全面的学习和参考资料库。 一、JavaScript基础 这个集合中可能包括了JavaScript的基础语法,如变量声明(var, let, const)、数据类型(字符...

    JavaScript 面试问题.zip

    123 个 JavaScript 面试问题本书的目标是通过精心编写的一系列问题帮助 javascript 前端开发人员准备技术工作面试。想买纸质书吗?想买一些超酷的抽认卡吗?本书即将完成,届时将以纸质形式出售。如果您希望我向您...

    javaScript经典实例

    8. **对象与原型链**:JavaScript采用原型继承,每个对象都有一个原型(__proto__),可以通过`prototype`属性定义对象的方法,实现类的模拟。 9. **异步编程**:Promise、async/await等机制解决了JavaScript中的回...

Global site tag (gtag.js) - Google Analytics