本文通过代码示例解析JavaScript中函数引用的核心概念。将函数名直接赋给变量时,变量存储的是函数引用而非执行结果;若需执行函数则必须使用括号。通过对比不同顺序的函数定义与变量调用,验证了变量对函数引用的动态绑定特性,为后续理解闭包奠定基础。
代码复制区域结束
函数引用与调用的基本区别
相关代码实现如下:
function tt()
{
alert(11);
}
var b = tt;
var b1 = tt(); //执行tt()函数功能 在JavaScript中,若要将函数作为值传递给变量,应直接赋值函数名“tt”。若使用“tt()”形式,则代表立即执行该函数并获取其返回值,而非获取函数引用本身。
当变量保存了函数引用后,可以通过“变量名()”的方式(例如b())来调用该函数。
代码复制区域结束
函数引用的动态绑定特性
以下代码展示了函数引用动态变化的特性:
function tt()
{
alert(11);
}
var b = tt;
alert(b);
function tt()
{
alert(22);
}
alert(b);
b(); 由于变量b保存的是对函数tt的引用,当函数tt的定义被后续代码覆盖或修改时,变量b所指向的行为也会随之改变,这与函数定义在代码中的先后顺序无关。因此,尽管两次alert(b)出现在代码的不同位置,它们输出的内容是一致的,均反映当前最新的函数定义。
此示例旨在演示基础概念,后续可进一步研究JavaScript中的闭包机制。
参考资料包括《征服RIA——基于JavaScript的web客户端开发》及《JavaScript权威指南》中文版。