为什么我无法从某些函数(JavaScript)中访问变量?

时间:2012-01-25 19:30:23

标签: javascript jquery

var myvar = "my value";

(function() {
  alert(myvar); // undefined
})();

  var myvar = "my value";
  $.post( url,
  function( data ) {
    alert(myvar); // undefined
  });

如何在不将此值存储在隐藏的输入或div或其他html容器中的情况下解决此问题?

2 个答案:

答案 0 :(得分:2)

如果将变量放在可通过引用访问的范围内,则一切正常。你可以在这里看到第一个例子:http://jsfiddle.net/jfriend00/WvnvC/

所以,你显然没有向我们展示整个图片,你可能已经在一个范围内声明了变量,而这个变量在你的引用中是不可用的。我们必须看到实际代码或实际范围才能知道问题所在。

此问题的一个常见原因是您在myvar处理程序(不是全局范围)中定义了$(document).ready(),然后您尝试从外部引用{{1}处理程序,它将无法访问。尝试将$(document).ready()的定义放在实际的全局范围内(不在任何其他函数内),或者放在与您尝试引用它的函数相同的范围内。

答案 1 :(得分:1)

您可以将其声明为全局(可以使用),但在为此目的编写JavaScript时可能不是最佳做法。

最好的方法是将变量存储在函数的顶部,位于函数的顶部

  $.post( url,
    function( data ) {
      var myvar = "my value";
      alert(myvar); // undefined
    });

如果您尝试在多种功能中使用它,我建议

(function($) {

     var myvar = "my value"; // To set this as a global, just remove the "var"

     $.post( url,
        function(data) {
          alert(myvar); // undefined
     });

})(jQuery);