Variable declaration placement guidelines in VBScript












0














Is there any rule for placement of variable declaration in VBScript, like if it should always be declared in the beginning? Or can I declare the variable while using it? Which one is more efficient?










share|improve this question



























    0














    Is there any rule for placement of variable declaration in VBScript, like if it should always be declared in the beginning? Or can I declare the variable while using it? Which one is more efficient?










    share|improve this question

























      0












      0








      0







      Is there any rule for placement of variable declaration in VBScript, like if it should always be declared in the beginning? Or can I declare the variable while using it? Which one is more efficient?










      share|improve this question













      Is there any rule for placement of variable declaration in VBScript, like if it should always be declared in the beginning? Or can I declare the variable while using it? Which one is more efficient?







      variables vbscript declaration placement






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 13 '18 at 8:42









      Deepak ChhabriaDeepak Chhabria

      61




      61
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Let's try with a simple code, with Option Explicit included so VBScript parser requests that all the variables used in the code are declared



          Option Explicit

          WScript.Echo TypeName( data )
          WScript.Echo TypeName( MY_DATA )

          Dim data : data = 10
          Const MY_DATA = 10

          WScript.Echo TypeName( data )
          WScript.Echo TypeName( MY_DATA )


          When executed it will ouptut



          Empty
          Integer
          Integer
          Integer


          That is




          • The first access to data does not generate any error. Variable declaration (the Dim statement) is hoisted. If the variable is declared inside the same (or outer) scope where it will be used then there will not be any problem.


          • But the first output is Empty. Only the declaration is hoisted, not the value assignment that is not executed until the line containing it is reached.


          • That does not apply to constant declaration. Its value is replaced in code where it is used but the real declaration is delayed until the const line is reached (read here).



          As long as the variables/constants can be reached (they are declared in the same or outer scope) it is irrelevant (to the VBScript parser/engine) where you place the declaration.



          But, of course, you or others will have to maintain the code. Being able to put the variables anywhere doesn't mean you should do something like the previous code (please, don't). It is a lot easier to read/maintain the code if variable declaration is done before initialization/usage. The exact way of doing it just depends on coding style.






          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%2f53276962%2fvariable-declaration-placement-guidelines-in-vbscript%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Let's try with a simple code, with Option Explicit included so VBScript parser requests that all the variables used in the code are declared



            Option Explicit

            WScript.Echo TypeName( data )
            WScript.Echo TypeName( MY_DATA )

            Dim data : data = 10
            Const MY_DATA = 10

            WScript.Echo TypeName( data )
            WScript.Echo TypeName( MY_DATA )


            When executed it will ouptut



            Empty
            Integer
            Integer
            Integer


            That is




            • The first access to data does not generate any error. Variable declaration (the Dim statement) is hoisted. If the variable is declared inside the same (or outer) scope where it will be used then there will not be any problem.


            • But the first output is Empty. Only the declaration is hoisted, not the value assignment that is not executed until the line containing it is reached.


            • That does not apply to constant declaration. Its value is replaced in code where it is used but the real declaration is delayed until the const line is reached (read here).



            As long as the variables/constants can be reached (they are declared in the same or outer scope) it is irrelevant (to the VBScript parser/engine) where you place the declaration.



            But, of course, you or others will have to maintain the code. Being able to put the variables anywhere doesn't mean you should do something like the previous code (please, don't). It is a lot easier to read/maintain the code if variable declaration is done before initialization/usage. The exact way of doing it just depends on coding style.






            share|improve this answer




























              1














              Let's try with a simple code, with Option Explicit included so VBScript parser requests that all the variables used in the code are declared



              Option Explicit

              WScript.Echo TypeName( data )
              WScript.Echo TypeName( MY_DATA )

              Dim data : data = 10
              Const MY_DATA = 10

              WScript.Echo TypeName( data )
              WScript.Echo TypeName( MY_DATA )


              When executed it will ouptut



              Empty
              Integer
              Integer
              Integer


              That is




              • The first access to data does not generate any error. Variable declaration (the Dim statement) is hoisted. If the variable is declared inside the same (or outer) scope where it will be used then there will not be any problem.


              • But the first output is Empty. Only the declaration is hoisted, not the value assignment that is not executed until the line containing it is reached.


              • That does not apply to constant declaration. Its value is replaced in code where it is used but the real declaration is delayed until the const line is reached (read here).



              As long as the variables/constants can be reached (they are declared in the same or outer scope) it is irrelevant (to the VBScript parser/engine) where you place the declaration.



              But, of course, you or others will have to maintain the code. Being able to put the variables anywhere doesn't mean you should do something like the previous code (please, don't). It is a lot easier to read/maintain the code if variable declaration is done before initialization/usage. The exact way of doing it just depends on coding style.






              share|improve this answer


























                1












                1








                1






                Let's try with a simple code, with Option Explicit included so VBScript parser requests that all the variables used in the code are declared



                Option Explicit

                WScript.Echo TypeName( data )
                WScript.Echo TypeName( MY_DATA )

                Dim data : data = 10
                Const MY_DATA = 10

                WScript.Echo TypeName( data )
                WScript.Echo TypeName( MY_DATA )


                When executed it will ouptut



                Empty
                Integer
                Integer
                Integer


                That is




                • The first access to data does not generate any error. Variable declaration (the Dim statement) is hoisted. If the variable is declared inside the same (or outer) scope where it will be used then there will not be any problem.


                • But the first output is Empty. Only the declaration is hoisted, not the value assignment that is not executed until the line containing it is reached.


                • That does not apply to constant declaration. Its value is replaced in code where it is used but the real declaration is delayed until the const line is reached (read here).



                As long as the variables/constants can be reached (they are declared in the same or outer scope) it is irrelevant (to the VBScript parser/engine) where you place the declaration.



                But, of course, you or others will have to maintain the code. Being able to put the variables anywhere doesn't mean you should do something like the previous code (please, don't). It is a lot easier to read/maintain the code if variable declaration is done before initialization/usage. The exact way of doing it just depends on coding style.






                share|improve this answer














                Let's try with a simple code, with Option Explicit included so VBScript parser requests that all the variables used in the code are declared



                Option Explicit

                WScript.Echo TypeName( data )
                WScript.Echo TypeName( MY_DATA )

                Dim data : data = 10
                Const MY_DATA = 10

                WScript.Echo TypeName( data )
                WScript.Echo TypeName( MY_DATA )


                When executed it will ouptut



                Empty
                Integer
                Integer
                Integer


                That is




                • The first access to data does not generate any error. Variable declaration (the Dim statement) is hoisted. If the variable is declared inside the same (or outer) scope where it will be used then there will not be any problem.


                • But the first output is Empty. Only the declaration is hoisted, not the value assignment that is not executed until the line containing it is reached.


                • That does not apply to constant declaration. Its value is replaced in code where it is used but the real declaration is delayed until the const line is reached (read here).



                As long as the variables/constants can be reached (they are declared in the same or outer scope) it is irrelevant (to the VBScript parser/engine) where you place the declaration.



                But, of course, you or others will have to maintain the code. Being able to put the variables anywhere doesn't mean you should do something like the previous code (please, don't). It is a lot easier to read/maintain the code if variable declaration is done before initialization/usage. The exact way of doing it just depends on coding style.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Dec 30 '18 at 9:58

























                answered Nov 13 '18 at 9:38









                MC NDMC ND

                58.5k54880




                58.5k54880






























                    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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2f53276962%2fvariable-declaration-placement-guidelines-in-vbscript%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

                    Xamarin.iOS Cant Deploy on Iphone

                    Glorious Revolution

                    Dulmage-Mendelsohn matrix decomposition in Python