繁体   English   中英

有什么区别 <input type=“hidden”> 和全局JS变量

[英]What's the difference between <input type=“hidden”> and global JS variable

在我们的代码库中,我们有两个,我不明白何时使用哪个......

如果<input type="hidden" id="someFlag" />我们以下列方式写入/读取值$("#someFlag").val('1'); $("#someFlag").val() == '1'

为什么不简单地将全局变量添加到JavaScript文件中?

var someFlag2;
...
someFlag2 = '1';
someFlag2 == '1'

这些方法之间是否存在一些差异?

当您使用AJAX请求时我想引导您,如果可能,您应该避免这两种方法首先,全局变量为什么要避免全局变量在下面提到...

在javascript中不鼓励全局变量的原因是因为,在javascript中所有代码共享一个全局命名空间,javascript也隐含了全局变量,即。 未在本地范围内显式声明的变量会自动添加到全局命名空间。 过分依赖全局变量可能会导致同一页面上各种脚本之间发生冲突

要知道如何避免全局变量,这将有所帮助 - > 如何避免JavaScript中的全局变量?

Sameway hiddenfields在dom上添加了额外的字段,并在繁重的过程中从DOM元素中获取值,同样地,您将仅以文本格式获取值,因此您始终需要将其转换为来自JSON的整数或对象,这也将是开销

我宁愿将它保存在一些必要的闭包中,如果你想知道如何在当前场景中应用它,我们可以在评论中讨论..有关闭包的信息,你可以看看这个stackoverflow 问题

如果要将一些重要值发布到服务器(您不希望向用户显示),请参阅type="hidden"输入是一个更好的选择。 通常人们在使用没有ajax的表单时使用它,如果你正在使用表单,那么你必须给它一个属性name="" ,因为这是作为键发送到服务器的属性。

虽然js中的全局变量在某种程度上是有用的,但我想不推荐它,因为它使代码有点不可维护。

我的想法有一点不同。

在发布表单时,您将能够获取隐藏字段的值作为请求变量的一部分,如果是全局javascript变量,则需要在POST或GET调用中显式发送它。

如果你只需要客户端的变量而不是你可以使用它们中的任何一个但是如果你需要在服务器调用中发送它们那么输入type =“hidden”将是一个不错的选择

隐藏字段对于数据结构一致性很有用。

即使您是100%AJAX,发送4个“真实”表单字段和两个隐藏字段比发送4个真实字段加两个全局字段更容易理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM