为什么此JavaScript / jQuery功能起作用-未声明的变量

时间:2019-01-31 20:47:26

标签: javascript jquery html

如果我尝试将s声明为变量,则会出错。它的行为就像s不是变量,实际上根本不喜欢任何语法更改。 实际上,我已经写了一个决策树网页,该网页非常依赖此概念,而且我不确定为什么它起作用。

<!DOCTYPE html>
<html>
<head>
 <title>Class Tests</title>

 <meta http-equiv="X-UA-Compatible" content="IE=edge" charset="UTF-8"/>
    <script src=" jQuery3.2.1.js"></script>
    <script src=" jQuery_UI.js"></script>
</head>

    <script>

        function selection(select){
            s = select;                  
        }

         $(document).ready(function(){
            $("button").click(function(){

           alert("boop " + s);

            });
        });

    </script>
    <body>
         <button onclick=selection('Genius')>Genius</button>
        <button onclick=selection('System')>Systems</button>
        <button onclick=selection('Personal')>Personal</button>
    </body>
</html>

3 个答案:

答案 0 :(得分:0)

  

不使用var关键字时未声明变量。它是在全局对象(即窗口)上创建的,因此它与声明的变量在不同的空间中操作。

Find out more on this link

答案 1 :(得分:0)

像这样设置s

function selection(select){
    s = select; 
}

可变范围相似:

var s;

function selection(select) {
    s = select; 
}

因此s作为window的属性存在,并且在selection函数内部和alert("boop " + s);中都可用,因为window是全局对象。但是,如果您在函数内使用var声明并为变量赋值,则:

function selection(select) {
    var s = select; 
}

s仅具有功能selection范围,并在此处进行检索:

alert("boop " + s);

导致错误,因为这里不存在错误。

答案 2 :(得分:0)

未使用关键字<root> <child1 /> <child2><ChildInfo> <Name>Something</Name> <School>ElementarySchool</School> <Age>7</Age> </ChildInfo> </child2> </root> 分配的变量称为未声明。这些是在全局范围内创建的。因此,您的var变量可在点击处理程序中使用。

现在,这仅在非严格模式下发生,因此,如果将s指令放在选择函数的内部或上方,则会出现错误。

'use strict'