strange behaviour of variable named “status” in javascript

前端 未结 3 1158
盖世英雄少女心
盖世英雄少女心 2020-12-02 01:50



        
相关标签:
3条回答
  • 2020-12-02 02:25

    change variable name 'status' , it is a Windows Reserved Word. In HTML you must avoid using the name of HTML and Windows objects and properties

    0 讨论(0)
  • 2020-12-02 02:32

    It's because you run your code in global context! var bound variables are bound to the function scope. If you have no function you are in global context, which means in a browser you are on the window object.

    This code will log Demo:

    <script>
      var foo = "Demo";
      console.log(window.foo);
    </script>
    

    Now your code breaks because window.status is reserved.

    An easy fix is to surround your code by a function to provide a new context for your variables, which is always good practice.

    <script>
        (function() {
            var status = [true,false,true,false,true,false,true,false,true,false];
            var status1 = [true,false,true,false,true,false,true,false,true,false];
    
            document.getElementById("demo1").innerHTML = status[2];
            document.getElementById("demo2").innerHTML = status1[2];
        })();
    </script>
    
    0 讨论(0)
  • 2020-12-02 02:36

    The word status is a reserved keyword, so you need to rename it like status3 or something else. See snippet below. You can also see a list of reserved words by visiting this link: http://www.w3schools.com/js/js_reserved.asp

    <!DOCTYPE html>
    <html>
    <body>
    
    <p id="demo1"></p>
    <p id="demo2"></p>
    
    <script>
    var status3 = [true,false,true,false,true,false,true,false,true,false];
    var status1 = [true,false,true,false,true,false,true,false,true,false];
    
    document.getElementById("demo1").innerHTML = status3[2];
    document.getElementById("demo2").innerHTML = status1[2];
    </script>
    
    </body>
    </html>

    I hope this will help you.

    0 讨论(0)
提交回复
热议问题