`
zccst
  • 浏览: 3309941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

延迟自定义函数

阅读更多
作者:zccst

如果函数内又定义了一个跟自己同名的函数,执行结果是什么?
function scareMe(){
	alert("Boo!");
	function scareMe(){
		alert("double boo!");
	}
	scareMe();
}
scareMe();


结论:把函数名当变量理解,还遵循作用域链规则。即外部调用外部的,内部调用内部的。


优点是:可以延迟定义函数(同时将只执行一次的代码放到外层同名函数中)
var scareMe = function (){
	alert("Boo!");
	scareMe = function (){
		alert("double boo!");
	}
}



缺点是:如果将外部函数赋给某一个变量,或对象的key时,还指向外层同名函数。
var scareMe = function (){
	alert("Boo!");
	scareMe = function (){
		alert("double boo!");
	}
}

scareMe.property = "properly";

var prank = scareMe;
var spooky = {boo: scareMe};

prank();//Boo!
prank();//Boo!
console.log(prank.property);//properly

spooky.boo();//Boo!
spooky.boo();//Boo!
console.log(spooky.boo.property);//properly

scareMe();//double boo!
scareMe();//double boo!
console.log(scareMe.property);//undefined

spooky.boo();//Boo!
console.log(spooky.boo.property);//properly


结论:
//scareMe是指向外部function(){...}的指针
//赋值发生后,prank和spooky.boo也都是指向外部function(){...}的指针。

//指向了prank()方法后,scareMe是指向内部function(){}
//其实,执行prank()、spooky.boo()、scareMe()中的任一个效果都一样
分享到:
评论

相关推荐

    Excel-165个VBA自定义函数大全

    ### Excel VBA自定义函数大全解析 #### 1. 返回Column英文字 此函数用于返回Excel列标的英文表示,例如A、B、C等。在处理大量数据时,这种函数可以方便地转换列号到列标,便于进一步的数据操作。 #### 2. 查询某一...

    mathmatica自定义函数PPT学习教案.pptx

    `:=`(延迟赋值)与`=`(立即赋值)是Mathematica中的两种赋值运算符,它们在自定义函数中起到不同的作用。`=`用于立即赋值,当定义函数时,右边的表达式会被立即计算并赋值。而`:=`则是延迟赋值,函数的定义不会...

    JavaScript 基本语法 高级语法 自定义函数下载

    这个资源包涵盖了JavaScript的基本语法、高级语法以及自定义函数的使用,对于学习和提升JavaScript技能非常有帮助。 **一、JavaScript基本语法** 1. **变量声明**:在JavaScript中,我们可以使用`var`、`let`或`...

    不带参数延迟函数

    在标准C库中并没有提供直接的延迟或定时功能,但开发者可以通过操作系统提供的API或使用自定义的方法来实现。 一个常见的实现方式是使用`sleep()`函数,它在POSIX兼容系统(如Linux、Unix)中可用。`sleep()`函数...

    在Matlab上实现自相关和互相关函数

    MATLAB虽然内置了`xcorr`和`corrcoef`等函数来计算自相关和互相关,但在特定场景下,如扩频通信,可能需要自定义函数以满足特定需求或优化性能。 标题中的"在Matlab上实现自相关和互相关函数"指的是创建自定义...

    常用原生js自定义函数总结

    本篇总结将会详细介绍一些在原生JavaScript中常见的自定义函数,通过函数的定义和使用场景,让读者能够更好地理解如何在实际开发中运用这些基础却实用的功能。 首先,我们来看获取日期的函数,它能够帮助我们获取...

    js Date自定义函数 延迟脚本执行

    在这篇文档中,提出了利用JavaScript Date对象实现自定义函数,以达到延迟执行脚本的目的。这是一种基于时间差的原理,即使用循环不断地检查当前时间与预定结束时间的差值,当达到或超过预定的时间差时,则退出循环...

    华大MCU延时函数重定义校准

    官方库延时函数误差太大,近2倍,在此基于嘀嗒定时器做了毫秒、微妙级别的两个延时函数。1、可用在IO口模拟串口等要求时序操作的场景,如DHT11单总线、模拟I2C、SPI等。已经在温湿度传感器DHT11上做了测试。2、例程...

    matlab学习笔记:如何在matlab中如何自定义函数和匿名函数

    pause(延迟时间):延迟函数。 其余的程序语句和C++大同小异,当然matlab也可以和C++一样自己定义函数。 定义函数语句为: function输出形参=函数名(输入形参) 例: 其中c为输出形参,counum为函数名,a,b为输入形参,...

    vb 优于Sleep的Delay函数

    因此,标题中的"vb 优于Sleep的Delay函数"提出了一个更优的解决方案,即创建一个自定义的延迟函数,可以在不中断程序执行的情况下实现延迟。 描述中提到的"封装成模块的延迟函数"是指将这个功能封装到一个独立的...

    loadtree 延迟加载 自定义事件(右键或子节点)

    在这个场景下,我们讨论的是如何在树结构组件中实现`loadtree`的延迟加载,并通过自定义事件处理用户交互,如右键点击或子节点操作。 延迟加载,或称为按需加载,是当用户滚动到特定区域或触发特定操作时才加载数据...

    易语言Exe_jkscript源码,易语言易乐谷.3源码,易语言易用脚本例程

    易语言易用脚本例程源码,易用脚本例程,加100,写到编辑框,自定义函数_取启动时间,自定义函数_前进,自定义函数_后退,自定义函数_左转,自定义函数_右转,自定义函数_延迟,自定义函数_延时,自定义函数_落笔,自定义函数_抬...

    FreeRTOS任务延迟函数测试程序

    这个“FreeRTOS任务延迟函数测试程序”显然是一个为了验证FreeRTOS内核中任务延迟功能的示例项目。在单片机开发中,了解并正确使用FreeRTOS的任务延迟函数对于实现高效、精确的实时控制至关重要。 FreeRTOS的核心是...

    MATALB 信号时延_matlab_信号时延_时延_

    标题和描述提到的问题是,在MATLAB的标准函数库中并没有直接提供一个用于实现信号时延的函数,因此需要自定义函数来完成这一任务。 `test_delaytime.m`可能是测试用例,用来验证`delaytime.m`函数的正确性。`...

    javascript 自定义回调函数示例代码

    本文通过讲解自定义回调函数示例代码,深入理解JavaScript中的回调函数使用方法及其实现原理。 1. 回调函数的定义 回调函数是一个在某个时刻会被调用的函数。在JavaScript中,函数可以作为一等公民,这意味着它们...

    Vue自定义指令封装节流函数的方法示例

    Vue自定义指令封装节流函数的方法示例 今天,我们来讨论 Vue 自定义指令封装节流函数的方法示例。节流函数是一种常用的前端开发技术,用于避免过多的性能消耗。在《JavaScript高级程序设计》一书中,就有一个典型的...

    S7-200斜坡函数库-RAMP+示例程序.rar

    1. 时间参数的设置需合理:上升时间和下降时间应根据系统特性调整,避免产生过大的冲击或响应延迟。 2. 考虑系统动态性能:在实际应用中,应充分考虑系统的动态响应,避免因RAMP函数过于复杂导致的振荡或不稳定。 3....

    MATLAB函数速查手册.pdf.zip

    函数分为内置函数和用户自定义函数,内置函数由MATLAB系统提供,而用户自定义函数则是用户根据需求编写并保存为.m文件。 一、MATLAB内置函数 1. 数学函数:如sin、cos、exp等,用于进行基本的三角函数、指数和对数...

    day12【函数式接口】-笔记1

    自定义函数式接口的常见用途是作为方法的参数,例如: ```java public static void doSomething(MyFunctionalInterface inter) { inter.myMethod(); } ``` 在这个例子中,`MyFunctionalInterface`接口可以接收一个...

Global site tag (gtag.js) - Google Analytics