在我们的代码库中,我们同时拥有它们,而且我不明白何时使用它...
如果<input type="hidden" id="someFlag" />
我们按以下方式$("#someFlag").val('1');
和$("#someFlag").val() == '1'
为什么不直接将全局变量添加到JavaScript文件中?
var someFlag2;
...
someFlag2 = '1';
someFlag2 == '1'
这些方法之间是否存在一些差异?
答案 0 :(得分:5)
当您使用AJAX请求时,我想引导您,如果可能,您应该避免这两种方法 首先,下面的原因提到了为什么你应该避免全局变量的全局变量...
在javascript中不鼓励全局变量的原因是因为,在javascript中所有代码共享一个全局命名空间,javascript也隐含了全局变量,即。未在本地范围内显式声明的变量会自动添加到全局命名空间。过分依赖全局变量可能会导致同一页面上各种脚本之间发生冲突
要知道如何避免全局变量,这将有所帮助 - &gt; How to avoid global variables in JavaScript?
Sameway hiddenfields在dom上添加了额外的字段,并在繁重的过程中从DOM元素中获取值,同样地,您将仅以文本格式获取值,因此您始终需要将其转换为来自JSON的整数或对象,这也将是开销
我更愿意将它保存在必要的闭包中。如果你想知道如何在当前场景中应用它,我们可以在评论中讨论..有关关闭的信息,你可以看看这个stackoverflow question
答案 1 :(得分:3)
如果您想将一些重要的值发布到服务器上,请参阅type="hidden"
输入,这是您不希望向用户显示的。通常人们在使用表单而不使用ajax 时会使用它。如果您正在使用表单,那么您必须为其提供属性name=""
,因为这是发送到服务器的属性作为关键。
虽然js中的全局变量在某种程度上是有用的,但我想不推荐它,因为它使代码有点不可维护。
答案 2 :(得分:1)
我的想法有一点不同。
在发布表单时,您将能够获取隐藏字段的值作为请求变量的一部分,如果是全局javascript变量,您需要在POST或GET调用中显式发送它。
如果你只需要客户端的变量而不是你可以使用任何变量,但是如果你需要在服务器调用中发送它们,那么输入type =“hidden”将是一个不错的选择
答案 3 :(得分:1)
隐藏字段对于数据结构一致性非常有用。
发送4个“真实”表单字段和两个隐藏字段比发送4个真实字段加上两个全局变量更容易理解,即使你是100%AJAX也是如此。