Is there a way to get the scopes of a function from outside the function - JS





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















While using chrome devtools console on a web page, searching for how I would access local variables from within a function, I realized that you can view scopes when manually inspecting a function in an object.



I accessed the function with getEventListeners(window).load[2] which returned



▼{listener: ƒ, useCapture: false, passive: false, once: false, type: "load"}

►listener: ƒ ()
once: false
passive: false
type: "load"
useCapture: false
►__proto__: Object



when I clicked on the listener function, it showed an object
►[[Scopes]]: Scopes[3]



The scopes object gave a list of all the variables that were used in the function (which was what I was looking for). However, I can only access these manually. There is nothing like getEventListeners(window).load[2].listener.Scopes



Is there any sort of function or method that will return these variables automatically. Such as:



var foo = getEventListeners(window).load[2].listener.Scopes[0]



Thanks










share|improve this question























  • I believe you are looking for this: stackoverflow.com/questions/7444399/…

    – Iskandar Reza Razali
    Nov 21 '18 at 23:15


















0















While using chrome devtools console on a web page, searching for how I would access local variables from within a function, I realized that you can view scopes when manually inspecting a function in an object.



I accessed the function with getEventListeners(window).load[2] which returned



▼{listener: ƒ, useCapture: false, passive: false, once: false, type: "load"}

►listener: ƒ ()
once: false
passive: false
type: "load"
useCapture: false
►__proto__: Object



when I clicked on the listener function, it showed an object
►[[Scopes]]: Scopes[3]



The scopes object gave a list of all the variables that were used in the function (which was what I was looking for). However, I can only access these manually. There is nothing like getEventListeners(window).load[2].listener.Scopes



Is there any sort of function or method that will return these variables automatically. Such as:



var foo = getEventListeners(window).load[2].listener.Scopes[0]



Thanks










share|improve this question























  • I believe you are looking for this: stackoverflow.com/questions/7444399/…

    – Iskandar Reza Razali
    Nov 21 '18 at 23:15














0












0








0








While using chrome devtools console on a web page, searching for how I would access local variables from within a function, I realized that you can view scopes when manually inspecting a function in an object.



I accessed the function with getEventListeners(window).load[2] which returned



▼{listener: ƒ, useCapture: false, passive: false, once: false, type: "load"}

►listener: ƒ ()
once: false
passive: false
type: "load"
useCapture: false
►__proto__: Object



when I clicked on the listener function, it showed an object
►[[Scopes]]: Scopes[3]



The scopes object gave a list of all the variables that were used in the function (which was what I was looking for). However, I can only access these manually. There is nothing like getEventListeners(window).load[2].listener.Scopes



Is there any sort of function or method that will return these variables automatically. Such as:



var foo = getEventListeners(window).load[2].listener.Scopes[0]



Thanks










share|improve this question














While using chrome devtools console on a web page, searching for how I would access local variables from within a function, I realized that you can view scopes when manually inspecting a function in an object.



I accessed the function with getEventListeners(window).load[2] which returned



▼{listener: ƒ, useCapture: false, passive: false, once: false, type: "load"}

►listener: ƒ ()
once: false
passive: false
type: "load"
useCapture: false
►__proto__: Object



when I clicked on the listener function, it showed an object
►[[Scopes]]: Scopes[3]



The scopes object gave a list of all the variables that were used in the function (which was what I was looking for). However, I can only access these manually. There is nothing like getEventListeners(window).load[2].listener.Scopes



Is there any sort of function or method that will return these variables automatically. Such as:



var foo = getEventListeners(window).load[2].listener.Scopes[0]



Thanks







javascript google-chrome-devtools






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 21 '18 at 23:11









wilson wilsonwilson wilson

333




333













  • I believe you are looking for this: stackoverflow.com/questions/7444399/…

    – Iskandar Reza Razali
    Nov 21 '18 at 23:15



















  • I believe you are looking for this: stackoverflow.com/questions/7444399/…

    – Iskandar Reza Razali
    Nov 21 '18 at 23:15

















I believe you are looking for this: stackoverflow.com/questions/7444399/…

– Iskandar Reza Razali
Nov 21 '18 at 23:15





I believe you are looking for this: stackoverflow.com/questions/7444399/…

– Iskandar Reza Razali
Nov 21 '18 at 23:15












3 Answers
3






active

oldest

votes


















0














I think is not possible, because may represent a security problem for Javascript



And if that is not the case, maybe the variables that you´re looking for were deleted by the garbage collector at the moment when you try to get those



You can read more about Memory Management here:



https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management






share|improve this answer































    0















    Is there any sort of function or method that will return these variables automatically.




    No, it's not possible. EnvironmentRecords are not accessible in "userland" code. The association between a function and an environment is internal to the function and the specification doesn't define any way to access that information.



    But of course the association exists and so the developer tools can expose that information for debugging purposes.






    share|improve this answer































      0














      firstly, you would have to use



      var foo = getEventListeners(window).load[2].listener['[[Scopes]]']



      because you forgot the extra square brackets, and secondly, they aren't actually available for your JavaScript, only for devTools.



      there is also a fake [[FunctionLocation]] that isn't available either






      share|improve this answer
























        Your Answer






        StackExchange.ifUsing("editor", function () {
        StackExchange.using("externalEditor", function () {
        StackExchange.using("snippets", function () {
        StackExchange.snippets.init();
        });
        });
        }, "code-snippets");

        StackExchange.ready(function() {
        var channelOptions = {
        tags: "".split(" "),
        id: "1"
        };
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function() {
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled) {
        StackExchange.using("snippets", function() {
        createEditor();
        });
        }
        else {
        createEditor();
        }
        });

        function createEditor() {
        StackExchange.prepareEditor({
        heartbeatType: 'answer',
        autoActivateHeartbeat: false,
        convertImagesToLinks: true,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: 10,
        bindNavPrevention: true,
        postfix: "",
        imageUploader: {
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        },
        onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        });


        }
        });














        draft saved

        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421742%2fis-there-a-way-to-get-the-scopes-of-a-function-from-outside-the-function-js%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        0














        I think is not possible, because may represent a security problem for Javascript



        And if that is not the case, maybe the variables that you´re looking for were deleted by the garbage collector at the moment when you try to get those



        You can read more about Memory Management here:



        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management






        share|improve this answer




























          0














          I think is not possible, because may represent a security problem for Javascript



          And if that is not the case, maybe the variables that you´re looking for were deleted by the garbage collector at the moment when you try to get those



          You can read more about Memory Management here:



          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management






          share|improve this answer


























            0












            0








            0







            I think is not possible, because may represent a security problem for Javascript



            And if that is not the case, maybe the variables that you´re looking for were deleted by the garbage collector at the moment when you try to get those



            You can read more about Memory Management here:



            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management






            share|improve this answer













            I think is not possible, because may represent a security problem for Javascript



            And if that is not the case, maybe the variables that you´re looking for were deleted by the garbage collector at the moment when you try to get those



            You can read more about Memory Management here:



            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 21 '18 at 23:26









            degreerichidegreerichi

            1013




            1013

























                0















                Is there any sort of function or method that will return these variables automatically.




                No, it's not possible. EnvironmentRecords are not accessible in "userland" code. The association between a function and an environment is internal to the function and the specification doesn't define any way to access that information.



                But of course the association exists and so the developer tools can expose that information for debugging purposes.






                share|improve this answer




























                  0















                  Is there any sort of function or method that will return these variables automatically.




                  No, it's not possible. EnvironmentRecords are not accessible in "userland" code. The association between a function and an environment is internal to the function and the specification doesn't define any way to access that information.



                  But of course the association exists and so the developer tools can expose that information for debugging purposes.






                  share|improve this answer


























                    0












                    0








                    0








                    Is there any sort of function or method that will return these variables automatically.




                    No, it's not possible. EnvironmentRecords are not accessible in "userland" code. The association between a function and an environment is internal to the function and the specification doesn't define any way to access that information.



                    But of course the association exists and so the developer tools can expose that information for debugging purposes.






                    share|improve this answer














                    Is there any sort of function or method that will return these variables automatically.




                    No, it's not possible. EnvironmentRecords are not accessible in "userland" code. The association between a function and an environment is internal to the function and the specification doesn't define any way to access that information.



                    But of course the association exists and so the developer tools can expose that information for debugging purposes.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 21 '18 at 23:54









                    Felix KlingFelix Kling

                    563k131872940




                    563k131872940























                        0














                        firstly, you would have to use



                        var foo = getEventListeners(window).load[2].listener['[[Scopes]]']



                        because you forgot the extra square brackets, and secondly, they aren't actually available for your JavaScript, only for devTools.



                        there is also a fake [[FunctionLocation]] that isn't available either






                        share|improve this answer




























                          0














                          firstly, you would have to use



                          var foo = getEventListeners(window).load[2].listener['[[Scopes]]']



                          because you forgot the extra square brackets, and secondly, they aren't actually available for your JavaScript, only for devTools.



                          there is also a fake [[FunctionLocation]] that isn't available either






                          share|improve this answer


























                            0












                            0








                            0







                            firstly, you would have to use



                            var foo = getEventListeners(window).load[2].listener['[[Scopes]]']



                            because you forgot the extra square brackets, and secondly, they aren't actually available for your JavaScript, only for devTools.



                            there is also a fake [[FunctionLocation]] that isn't available either






                            share|improve this answer













                            firstly, you would have to use



                            var foo = getEventListeners(window).load[2].listener['[[Scopes]]']



                            because you forgot the extra square brackets, and secondly, they aren't actually available for your JavaScript, only for devTools.



                            there is also a fake [[FunctionLocation]] that isn't available either







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Feb 14 at 16:16









                            Aiden WatermanAiden Waterman

                            135




                            135






























                                draft saved

                                draft discarded




















































                                Thanks for contributing an answer to Stack Overflow!


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid



                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.


                                To learn more, see our tips on writing great answers.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function () {
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421742%2fis-there-a-way-to-get-the-scopes-of-a-function-from-outside-the-function-js%23new-answer', 'question_page');
                                }
                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown







                                Popular posts from this blog

                                Guess what letter conforming each word

                                Port of Spain

                                Run scheduled task as local user group (not BUILTIN)