0

我有一个简单的函数可以更改传递给它的变量。但退出函数后,变量返回旧值。我不知道为什么或如何解决它

<!DOCTYPE html>
<html>
<head>

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>    

  <script>
    $(document).ready(function() {
        var a='test';

        $().doit(a);
        alert(a);
    });

    (function ($) {
            $.fn.doit = function (input) {
                alert(input);
                input='new';
                alert(input);
            };

    }(jQuery));
  </script>
</head>

<body>
</body>
</html>
4

2 回答 2

4

这是设计使然,当变量退出内部范围(您的 doit 函数)时,值会返回到以前的值,因为在 JS 中,变量总是按值传递。

如果您想保留该值,则必须从函数中返回该值:

<script>

    $(document).ready(function() {
        var a='test';

        a = $().doit(a);
        alert(a);
    });

    (function ($) {
            $.fn.doit = function (input) {
                alert(input);
                input='new';
                alert(input);
                return input;
            };

    }(jQuery));
  </script>

你可以看到它在这里工作:http: //jsfiddle.net/nQSNy/

于 2013-05-30T08:11:08.913 回答
1

这是因为您a通过值而不是通过引用传递变量。但是,您可以从函数中返回一个值并使用它。

于 2013-05-30T08:11:50.360 回答