javascript - javascript自调用匿名函数的使用

标签 javascript anonymous-function self-invoking-function

请参阅以下代码块。哪一个是最好的选择?基本上他们都在做同样的事情

示例 1

var otherVars1
var otherVars2
var otherVars3
var valid; // create a boolean variable
// some precondition to set valid to true or false
.... 

if (valid || someRegex.test(value)) {
  ...
}

示例 2

var otherVars1
var otherVars2
var otherVars3

// create a function that return a boolean
function isValid() {
  ...
  return Boolean
}

if (isValid() || someRegex.test(value)) {
 ...
}

示例3

var otherVars1
var otherVars2
var otherVars3

// use self-invoke anonymous function directly
if ((function() {
...
return Boolean })() || someRgex.test(value)) {
  ...
}

比较这三个示例,我更喜欢使用自调用匿名函数(示例 3),原因如下

  • 不需要创建不必要的变量和分配内存(ex1:valid,ex2:isValid)

  • 保持代码的整洁,逐段或逐模块,以便于管理和组织

  • 自包含,以便自调用匿名函数之外的变量不会受到污染

如果我在上述任何一点上有错误,请纠正我,并告诉我您的偏好和原因是什么?

最佳答案

我想说,您可以使用立即调用函数表达式,但您可以避免在if内使用它们,并且可以按如下方式使用。

这将避免变量声明、函数等不必要的全局范围

(function() {
  var otherVars1
  var otherVars2
  var otherVars3
  var valid; // create a boolean variable
  // some precondition to set valid to true or false
  .... 

  if (valid || someRegex.test(value)) {
    ...
  }

})();

关于javascript - javascript自调用匿名函数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40623268/

相关文章:

javascript - jQuery 事件中的自调用函数不起作用

javascript - 如何最好地比较 JavaScript 中的两个多级对象以找出差异?

javascript - 访问 JavaScript 对象

javascript - 从 AJAX 请求中抓取 JSON 数据

javascript - 在运行时将对象传递给 javascript 函数

recursion - SML 中的递归匿名函数

javascript - JavaScript 中的代码顺序

javascript - 单元测试 Javascript 匿名函数

Javascript自调用函数在 Angular ionic 中不起作用

javascript - JavaScript 匿名函数可以返回自身吗?