Javascript 为什么警报不起作用?

Javascript 为什么警报不起作用?,javascript,Javascript,我想知道在声明变量时是否使用var有什么区别。我使用了以下代码: <body> <h1>New Web Project Page</h1> <script type="text/javascript"> function test(){ a = "hello"; var b="world"; } alert(a);

我想知道在声明变量时是否使用var有什么区别。我使用了以下代码:

<body>
    <h1>New Web Project Page</h1>
    <script type="text/javascript">
        function test(){
            a = "hello";
            var b="world";
        }
        alert(a);
            alert(b);


    </script>
</body>
为什么警报不起作用,以及在声明变量时是否在javascript中使用var有什么区别。

警报不起作用,因为在b的情况下,它不在正确的范围内,在a的情况下,它还没有被实例化,因为您没有调用函数测试

var创建一个变量,该变量是调用它的作用域的局部变量。如果没有var,则创建一个全局变量

function fn ( ) {
    var x = 0; // this variable is local to the function fn

    y = 10; // this variable is global and can be accessed
            // from anywhere after you call fn
}

一般来说,除非有充分的理由不想使用全局变量。也就是说,您希望使用var创建所有变量。将变量仅放在所需的范围内,可以更容易地理解和维护代码。这也有助于缓解神奇变量的问题。在这里,您有刚刚出现的变量,但您不清楚它们来自何处。它还使调试代码变得更容易,因为在javascript中,不存在的变量是动态创建的。但是,如果您仅通过var和jsLint之类的工具使用局部变量,您就不会遇到变量名拼写错误的问题,从而使代码变得异常。

您没有调用测试函数。当var被排除时,变量变为全局变量,因此它们对所有代码都可用。

声明一个没有var的变量会使其成为全局变量,以便任何人都可以访问它。然而,警报无法工作的原因是您从未调用测试,因此从未分配a或b。如果您在警报之前调用test,则b将是未定义的,a应为hello


关于“var”的使用,回答了完全相同的问题

关于警报不起作用的原因,这是因为您没有调用“test”函数。它刚刚被创建…它什么也做不了。您需要调用它来填充变量。

即使他这样做了,b仍然不会被定义