【问题标题】:When would an IIFE (JS) or protected/private/static (PHP) be used in a real situation?IIFE (JS) 或受保护/私有/静态 (PHP) 何时会在实际情况中使用?
【发布时间】:2018-01-12 23:55:22
【问题描述】:

我对 IIFE 和受保护/私有/静态值有基本的了解。当我学习 JS 时,我注意到 IIFE 被提及以保持变量和函数“受保护”。对于 PHP 类,我也注意到同样的事情,比如将属性设置为受保护或私有。

但是,为什么要在真实情况下进行这些操作呢?不访问变量或不访问类属性不会有相同的效果吗?

另外,当您不必访问变量时,为什么还要在 ES6 范围内使用 let 和 const?

【问题讨论】:

标签: javascript php class ecmascript-6 iife


【解决方案1】:

IIFE 是匿名函数,它们在创建后立即执行(除非它位于另一个需要等待调用的代码块中)。它们对于在不污染全局命名空间的情况下执行代码很有用。如果您想完成一项任务,然后立即丢弃在执行该任务时创建的变量,那么 IIFE 应该是您的首选。

const 关键字对于声明不允许更改的变量非常有用。例如:const pi = 3.14159;

【讨论】:

  • 所以如果我只使用一次 JS 函数,以后再也不会,那么 IIFE 是否合适?
  • @00Saad 是的,完全正确。本质上,当您调用 IIFE 函数时,您希望使用它来产生副作用,而不是从中获取任何价值。此外,它还可以防止名称空间混乱,让好的变量名保持开放状态。
【解决方案2】:

如果您是您编写的代码的唯一用户,那么使用这种类型的保护只会在您将来回来时帮助您自己阅读和理解,但最终,除了遵循“最佳实践。”

但是,如果其他人正在使用您的代码,那么您可能希望(或需要)将某些实​​现保密,这不仅是为了确保您构建时的操作,而且也是为了避免那些实现您的代码的人意外破坏。

【讨论】:

  • 如果我明白你在说什么,它基本上是为了“保护”代码免受不必要的更改?有没有这方面的真实例子?
  • @00Saad 当然,看看几乎所有的 JavaScript 框架。由于 javascript 在“类”上没有私有/受保护的成员,因此可以在对象的原型上查找、使用和/或覆盖属性。为了抑制这种情况,将使用局部闭包来创建只能从内部访问的私有变量。不仅可以防止意外(或有目的)使用不需要公开的属性,而且还会带来其他好处,例如编译/缩小后文件更小、内存占用更小等。
猜你喜欢
  • 2010-09-16
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
相关资源
最近更新 更多