关于javascript:在jquery中,如何从外部(函数内部)获取变量 |
您所在的位置:网站首页 › js获取函数内部变量 › 关于javascript:在jquery中,如何从外部(函数内部)获取变量 |
本问题已经有最佳答案,请猛点这里访问。
我想知道如何从函数的外部、jquery的函数的内部获取变量,但是我得到了Uncaught ReferenceError: myvar is not defined。有什么办法吗? 我的代码的一个简单示例: 1234567$(function(){ var myvar ="stackoverflow"; }); $(function(){ alert(myvar); });但当我在函数外部定义变量时,它会工作: 12345var myvar ="stackoverflow"; $(function(){ alert(myvar); });为什么? 感谢您的帮助!谢谢您! 相关讨论 这就是它的工作方式。阅读stackoverflow.com/questions/500431/javascript-variable-scope 是的,阅读JS范围。 函数创建作用域。用var声明的变量是该函数的局部变量,不能在函数外部访问。变量甚至只在代码运行时存在(假设没有闭包)。第二个例子之所以有效,是因为您将myvar定义为全局变量(可以从任何地方访问)。 第一个例子不起作用,因为变量是在函数作用域内定义的(这意味着除了函数作用域和在父函数作用域内定义的函数作用域之外,所有人都无法访问它)。 正如注释中所述,这就是JavaScript的工作方式。如果这是您遇到的问题,那么可能是时候重新考虑您的体系结构了。 一种常见的模式是将共享变量定义为父对象或函数的属性。例如: 12345678$(function() { var funcOne = function() { this.sharedVal = 'stack overflow'; }; var funcTwo = function() { console.log(funcOne.sharedVal); }; });这样,您就可以拥有不同的函数,这些函数能够在其他函数中共享它们的属性,同时保持全局命名空间的干净。然而,请注意,在本例中,一个简单的var x = 'something';如果不作为另一个函数的属性绑定,也可以做到这一点。 相关讨论 非常感谢你的解释。:) 不客气:D在第二个示例中,myvar在全局范围内,而在第一个示例中,它包含在函数中。 但是,您可以强制它是全局的: 1234567$(function(){ window.myvar ="stackoverflow"; }); $(function(){ alert(myvar); });(假设在浏览器中) 相关讨论 应该注意的是,这是一种可怕的做法…也就是说,据我所知,这是实现行动要求的唯一途径,所以+1。 :)当然,永远不要这样做,但这是可能的。是由于变量的作用域。在$(function()中定义的变量在此函数内有作用域。这里的封套描述了范围。在函数外部定义的变量具有全局范围并在窗口对象中定义。 函数内部的作用域。 1234$(function(){ var myvar ="stackoverflow"; }); // myvar is not accessible here.窗口对象内的作用域。 12345$(function(){ window.myvar ="stackoverflow"; }); // myvar is accessible here.当您在函数内部声明变量时,它的作用域仅限于该函数(在您的场景中)。 要在函数外部的任何地方访问它们,需要将其声明为全局变量。这是第二种情况。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |