Underscore.js _.once()函数
Underscore.js 是一个 JavaScript 库,即使不使用任何内置对象,它也提供了许多有用的功能,如映射、过滤、调用等。
_.once函数用于我们希望特定函数仅执行一次的情况。即使我们多次执行或调用此函数,它也将不起作用。原始函数的值只会在每次调用时返回。
它主要用于 initialize() 函数,这些函数仅用于为变量分配初始值。
句法:
_.once(function)
参数:
它只需要一个参数,即只需要调用一次的函数。返回值:
每次迭代或重复调用函数时,它都会返回原始调用的值。
- 使用 _.once()函数:
传递给 _.once()函数的函数将 10 添加到最初具有 10 值的变量 10 中。然后将_.once()函数分配给另一个函数'startFunc()'。那么第一次调用'startFunc()'时'a'的值增加10变成20。所以第一次调用的输出是20。然后下一次调用'startFunc()'时的值of 'a' 应该再次增加 10,但这不会发生。这是因为 'startFunc()' 在其定义中有一个函数'_.once()' 可以防止它被执行多次。因此,第二次和第三次调用的输出将与第一次相同,即 20。在第一行,在调用“startFunc()”之前打印了“a”的值,因此输出为 10。
例子:输出:
- 使用 _.once()函数执行乘法运算:
传递给 _.once()函数的函数将最初值为 10 的变量“a”乘以 10。然后将_.once()函数分配给另一个函数'startFunc()'。第一次调用'startFunc()'时'a'的值乘以10变成100。所以第一次调用的输出是100。下一次调用'startFunc()'时的值'a' 应该再次乘以 10,但这不会发生。这是因为 'startFunc()' 在其定义中有一个函数'_.once()' 可以防止它被执行多次。因此,第二次和第三次调用的输出将与第一次相同,即 100。在第一行,在调用“startFunc()”之前打印了“a”的值,因此输出为 10。输出:
- 将字符串传递给 _.once()函数:
传递给 _.once()函数的函数将变量 'a' 的原始字符串附加到另一个字符串。 _.once()函数被分配给另一个函数'startFunc()'。第一次调用 'startFunc()' 时,'a' 的值由“ appended”字符串附加,因此变为“xyz appended”。所以第一次调用的输出是“xyz appended”。然后下次调用“startFunc()”时,应该再次附加“a”的值,但这不会发生。这是因为 'startFunc()' 在其定义中有一个函数'_.once()' 可以防止它被执行多次。因此,第二次和第三次调用的输出将与第一次相同,即“xyz appended”。在第一行,在调用“startFunc()”之前打印了“a”的值,因此输出为“xyz”。输出:
- 将数字和字符串都传递给 _.once()函数:
在这里,我们对一个函数执行 _.once()函数,该函数既将字符串附加到原始值为“xyz”的变量“a”,也将 10 添加到原始值为 5 的变量“b”。在第一行将显示变量“a”和“b”的原始值。之后,当我们第一次调用 'startFunc()' 时,'a' 变量被附加了 'appended'字符串,并且 'b' 变量的值增加了 10。所以,'a' 变成了“xyz appended”,而 'b' ' 变为 15。现在每次使用 'startFunc()' 时,'a' 和 'b' 的值将保持不变,因为我们在 'startFunc()' 的定义中使用了 _.once()函数。输出:
笔记:
这些命令在 Google 控制台或 Firefox 中不起作用,因为需要添加他们没有添加的这些附加文件。
因此,将给定的链接添加到您的 HTML 文件中,然后运行它们。
链接如下: