且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何利用JavaScript的arguments对象实现用代码打印调用栈的需求

更新时间:2022-09-01 19:32:51

 

</div><div data-lake-id="7f781019af95b4bacb851fcf736c3d78">function getCallStack() {</div><div data-lake-id="8cf1437bf4184faa05208e34845d9a50">    var stack = "Callstack:", fn =arguments.callee;</div><div data-lake-id="65dc8e34a16e775f3556862c6204c161">    while ( (fn = fn.caller) ) {</div><div data-lake-id="419ae83577c81b39c67fde48b500e591">        stack = stack + "\n" +fn.name;</div><div data-lake-id="2122c9ff232705df6ced69412fdabd45">    }</div><div data-lake-id="86c0295209fd775067c38a9b3983b04d">    return stack;</div><div data-lake-id="0bf3e37cdff80eadb5ee7ef1b33b03e1">}</div><div data-lake-id="4586d2cc0c7b61e0ecd1276e6fd8c0c0">function test1() {</div><div data-lake-id="ac39b209680d112de23d68909faa00f7">    console.log(getCallStack());</div><div data-lake-id="44f42c16448d33616ffe66cb7d0aed55">}</div><div data-lake-id="a25f823af88e699c6a0aba4fc62589bb">function test2() {</div><div data-lake-id="9fde485d99cc67f1b6038995de519af2">    test1();</div><div data-lake-id="2c231f3c641099f6c27f1235ef1fe45b">}</div><div data-lake-id="8268158b1f650ae1a53b58249a559c18">function test3() {</div><div data-lake-id="71c158125afa3e71c10d6dd194de29d2">    test2();</div><div data-lake-id="2c8a056a83462f2773a1a1d7e4c3aace">}</div><div data-lake-id="fde24bc8e646e15a163f43c136dea5af">function test4() {</div><div data-lake-id="4decf8bb70d3b31268a692b84a367fce">    test3();</div><div data-lake-id="74e2a2c06ce892b6ce6194a72ceeb607">}</div><div data-lake-id="b9ad52df6acf4af81120bab20eb8d390">test4();</div><div data-lake-id="5f7f35c4f18c5024bb30bd8ebe3d11d0">

如何利用JavaScript的arguments对象实现用代码打印调用栈的需求