首页 web前端 js教程 JavaScript实现显示函数调用堆栈的方法_javascript技巧

JavaScript实现显示函数调用堆栈的方法_javascript技巧

May 16, 2016 pm 03:04 PM
javascript 函数调用 堆栈 显示

本文实例讲述了JavaScript实现显示函数调用堆栈的方法。分享给大家供大家参考,具体如下:

许多大型的JavaScript应用程序间的函数调用关系是非常复杂的,在开发或者调试过程中,经常需要跟踪某个函数是由哪些函数调用后才触发执行的,弄清楚这些函数的调用顺序对我们理解代码的数据流向是非常重要的。

Firebug提供了console.trace()来显示函数堆栈,在需要调试的地方加上下面的一行代码就能显示该函数调用时的上下文关系。IE6就没有这么方便了,它没有提供显示函数堆栈的工具,当不可避免的需要在IE6下调试代码时,使用下面的代码能够显示函数堆栈(建议将下面的JavaScript代码保存为console.trace.js,通过外部引入js的方式引用到页面):

JAVASCRIPT代码如下:

/**
* 获取函数名称
*
* @param {Function} func 函数引用
* @return {String} 函数名称
*/
function getFunctionName(func) {
  if ( typeof func == 'function' || typeof func == 'object' ) {
    var name = ('' + func).match(/function\s*([\w\$]*)\s*\(/);
  }
  return name && name[1];
}
if (!('console' in window)) {
  window.console = {};
}
if (!console.trace) {
  /**
   * 显示函数堆栈<br/>
   * 为了和Firebug统一,将trace方法添加到console对象中
   *
   * @param {Function} func 函数引用
   *
   * @example
function a() {
b();
}
function b() {
c();
}
function c() {
d();
}
function d() {
console.trace();
}
a();
   */
  console.trace = function() {
    var stack = [],
      caller = arguments.callee.caller;
    while (caller) {
      stack.unshift(getFunctionName(caller));
      caller = caller && caller.caller;
    }
    alert('functions on stack:' + '\n' + stack.join('\n'));
  }
};

登录后复制

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

桌面布局已锁定的原因及解决方法 桌面布局已锁定的原因及解决方法 Feb 19, 2024 pm 06:08 PM

显示桌面布局已锁定是怎么回事在使用计算机的过程中,有时我们可能会遇到显示桌面布局已锁定的情况。这个问题意味着我们无法自由地调整桌面图标的位置或改变桌面背景等操作。那么,显示桌面布局已锁定到底是怎么回事呢?一、理解桌面布局和锁定功能首先,我们需要了解桌面布局和桌面锁定这两个概念。桌面布局是指桌面上各个元素的排列方式,包括快捷方式、文件夹和小部件等。我们可以自由

C++ 函数调用性能调优:参数传递和返回值的影响 C++ 函数调用性能调优:参数传递和返回值的影响 May 04, 2024 pm 12:57 PM

C++函数调用性能优化包括两方面:参数传递策略和返回值类型优化。参数传递方面,传递值适合小对象、不可修改参数,传递引用或指针则适合大对象、可修改参数,而传递指针速度最快。返回值优化方面,小型值可直接返回,大对象应返回引用或指针。选择合适策略能提高函数调用性能。

Linux 中如何查看当前目录? Linux 中如何查看当前目录? Feb 23, 2024 pm 05:54 PM

在Linux系统中,要显示当前路径可以使用pwd命令。pwd命令是PrintWorkingDirectory的缩写,用于显示当前工作目录的路径。在终端中输入以下命令即可显示当前路径:pwd执行该命令后,终端会显示当前工作目录的完整路径,如:/home/user/Documents。另外,还可以使用一些其他选项来增强pwd命令的功能,例如-P选项可以显示出

C++ 中如何在不同模块中调用函数? C++ 中如何在不同模块中调用函数? Apr 12, 2024 pm 03:54 PM

在C++中跨模块调用函数:声明函数:在目标模块的头文件中声明要调用的函数。实现函数:在源文件中实现函数。链接模块:使用链接器将包含函数声明和实现的模块链接在一起。调用函数:在需要调用的模块中包含目标模块的头文件,然后调用函数。

C++ 函数调用反射技术:参数传递和返回值的动态访问 C++ 函数调用反射技术:参数传递和返回值的动态访问 May 05, 2024 am 09:48 AM

C++函数调用反射技术允许在运行时动态获取函数的参数和返回值信息。使用typeid(decltype(...))和decltype(...)表达式可获取参数和返回值类型信息。通过反射,我们可以动态调用函数,并根据运行时输入选择特定的函数,实现灵活和可扩展的代码。

探索 PHP 函数调用的各种方式 探索 PHP 函数调用的各种方式 Apr 16, 2024 pm 02:03 PM

PHP函数调用共有五种方式:直接调用、通过变量调用、匿名函数、函数指针和反射。通过选择最适合情况的方法,可以优化性能和提高代码简洁性。

怎么显示wifi密码二维码 推荐无线密码微信扫一扫3秒搞定 怎么显示wifi密码二维码 推荐无线密码微信扫一扫3秒搞定 Feb 20, 2024 pm 01:42 PM

WIFI密码不用经常输入,所以忘记了也很正常,今天我教大家一个最简单的方法来查到自己家WIFI的密码,3秒搞定。WIFI密码那就是用微信的扫一扫来查看,本方法的前提是:要有一台手机能连上过WIFI。好了,下面开始操作教程:步骤1、我们进入手机,从手机顶部下拉,调出状态栏,WIFI图标步骤2、长按WIFI图标,进入WLAN设置;长按WIFI图标步骤3、点击已经连接上的自己家的WIFI名称,点击分享密码,它会弹出来二维码;分享WIFI密码步骤4、我们截图保存此二维码;步骤5、桌面长按微信图标,点击扫

C++ 函数调用机制详解 C++ 函数调用机制详解 Apr 11, 2024 pm 02:12 PM

C++中的函数调用机制涉及将参数传递给函数并执行其代码,返回结果(如果存在)。参数传递有两种方式:值传递(修改在函数内部进行)和引用传递(修改反映在调用者中)。在值传递中,函数内的值修改不影响原始值(如printValue),而引用传递中的修改会影响原始值(如printReference)。

See all articles