为什么这个js语句无效?

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <script type="text/javascript">
        
    var t = 10;

    if(t==10)
    {
        function rec()
        {
            alert(1);
        }
    }
    else
    {
        function rec()
        {
            alert(2);
        }
    }
    </script>
</body>
</html>

为啥不会弹出结果呀

阅读 6.4k
12 个回答

首先,function是函数声明而不是执行,想要执行需要调用或者使用自执行结构,而问题里的只有声明而没有执行的过程,所以才看不到alert弹出;

其次,这段程序里实际做了三个事:

  1. 声明t变量,并给它赋值;

  2. 判断t变量;

  3. 根据判断到的值,弹出alert.

在这三段过程里,可以发现后两段是可以合并成一步的,所以程序其实可以这样写:

// 函数:判断t的值,并弹出相应结果
function checkT(t) {
    if (t==10) {
        alert(1);
    } else {
        alert(2);
    }
}

// 声明t,然后执行函数
var t = 10;
checkT(t);

最后,建议function单独去声明,不建议嵌套在if...else这样的判断结构里用。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <script type="text/javascript">
        
    var t = 10;

    if(t==10)
    {
        (function rec()
        {
            alert(1);
        })();
    }
    else
    {
        (function rec()
        {
            alert(2);
        })();
    }
    </script>
</body>
</html>

改成立即执行函数就可以了

rec 这个函数你一直没有调用执行啊,

var t = 10;

    if(t==10)
    {
        function rec()
        {
            alert(1);
        }
    }
    else
    {
        function rec()
        {
            alert(2);
        }
    }

rec()

1、函数没有调用
2、函数干嘛这样定义呢

    <script type="text/javascript">
        
        
        function rec(param)
        {
            if(param==10){
                alert(1)
            }else{
                alert(2)
            }
        }
        var t = 10;
        rec(t);//执行调用
    </script>

进入了if的作用域后里面的函数都没有调用,怎么会执行

if里面的函数没有调用。

<!DOCTYPE html>
<html>
<head>

<title></title>

</head>
<body>

<script type="text/javascript">
    
var t = 10;

if(t==10)
{
    function rec()  //你这里只是定义了一个函数,下面的也同样,在这里应该在外部先定义好rec函数后,                                                                        
                    //用rec()调用就好
    {
        alert(1);
    }
}
else
{
    function rec()
    {
        alert(2);
    }
}
</script>

</body>
</html>

我建议还是把函数单独声明,之后再调用吧。

你的函数都没执行哪里来的效果,就好像你的车子都没启动,你问车子为什么不走是一样的,大兄弟!!

你只是定义了这个函数,但是你没有调用这个函数,就跟你钱很多,但是你不花,钱就发挥不了他的作用

函数只定义了,并没有调用,另外哪有这样用if else的哦

推荐问题