当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


underscore.js _.once()用法及代码示例


Underscore.js 是一个 JavaScript 库,即使不使用任何 内置 对象,它也提供了许多有用的函数,如Map、过滤器、调用等。

_.once 函数用于我们希望特定函数仅执行一次的情况。即使我们多次执行或调用此函数,它也将不起作用。原始函数的值只会在每次调用时返回。它主要用于 initialize() 函数,用于只为变量分配初始值。

用法:

_.once(function)

参数:
它只需要一个参数,即只需要调用一次的函数。

返回值:
每次迭代或重复调用函数时,它都会返回原始调用的值。



  1. 使用 _.once() 函数执行加法函数:
    传递给 _.once() 函数的函数将 10 添加到最初具有 10 值的变量 10。然后将_.once() 函数分配给另一个函数“startFunc()”。那么第一次调用'startFunc()'时,‘a’的值加10变为20。所以第一次调用的输出是20。那么下一次调用'startFunc()'时,‘a’的值又应该是增加 10 但这不会发生。这是因为“startFunc()”在其定义中有一个函数“_.once()”,可以防止它被执行多次。因此,第二次和第三次调用的输出将与第一次相同,即 20。在第一行,在调用“startFunc()”之前打印 ‘a’ 的值,因此输出为 10。
    Examples:
    
    <html>
      
    <head>
        <script src=
    "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
      </script>
    </head>
      
    <body>
        <script type="text/javascript">
            var a = 10;
      
            function add() {
                a += 10;
            }
            var startFunc = _.once(add);
            console.log(a);
            startFunc();
            console.log(a);
            startFunc();
            console.log(a);
            startFunc();
            console.log(a);
        </script>
    </body>
      
    </html>

    输出:

  2. 使用 _.once() 函数执行乘法运算:
    传递给 _.once() 函数的函数将原来值为 10 的变量 ‘a’ 乘以 10。然后 _.once() 函数被分配给另一个函数“startFunc()”。第一次调用'startFunc()'时,‘a’的值乘以10变成100。所以第一次调用的输出是100。那么下一次调用'startFunc()'时,‘a’的值又应该是再次乘以 10,但这不会发生。这是因为“startFunc()”在其定义中有一个函数“_.once()”,可以防止它被执行多次。因此,第二次和第三次调用的输出将与第一次相同,即 100。在第一行,在调用“startFunc()”之前打印 ‘a’ 的值,因此输出为 10。
    
    <html>
      
    <head>
        <script src=
    "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
      </script>
    </head>
      
    <body>
        <script type="text/javascript">
            var a = 10;
      
            function add() {
                a *= 10;
            }
            var startFunc = _.once(add);
            console.log(a);
            startFunc();
            console.log(a);
            startFunc();
            console.log(a);
            startFunc();
            console.log(a);
        </script>
    </body>
      
    </html>

    输出:

  3. 将字符串传递给 _.once() 函数:
    传递给 _.once() 函数的函数将变量 ‘a’ 的原始字符串附加到另一个字符串。 _.once() 函数被分配给另一个函数“startFunc()”。第一次调用“startFunc()”时,‘a’ 的值由“附加”字符串附加,因此变为 “xyz appended”。所以第一次调用的输出是“xyz appended”。然后下次调用“startFunc()”时,应该再次附加 ‘a’ 的值,但这不会发生。这是因为“startFunc()”在其定义中有一个函数“_.once()”,可以防止它被执行多次。因此,第二次和第三次调用的输出将与第一次相同,即 “xyz appended”。在第一行,‘a’ 的值在调用“startFunc()”之前被打印出来,因此输出是 “xyz”。
    
    <html>
      
    <head>
        <script src=
    "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
      </script>
    </head>
      
    <body>
        <script type="text/javascript">
            var a = 'xyz';
      
            function add() {
                a += " appended ";
            }
            var startFunc = _.once(add);
            console.log(a);
            startFunc();
            console.log(a);
            startFunc();
            console.log(a);
            startFunc();
            console.log(a);
        </script>
    </body>
      
    </html>

    输出:

  4. 将数字和字符串都传递给 _.once() 函数:
    在这里,我们对一个函数执行 _.once() 函数,该函数既将字符串附加到原始值为 “xyz” 的变量 ‘a’ 上,也将 10 添加到原始值为 5 的变量 ‘b’ 上。在第一行,两个变量 ‘a’ 的原始值并显示 ‘b’。之后,当我们第一次调用“startFunc()”时,‘a’ 变量由“附加”字符串附加,‘b’ 变量的值增加 10。因此,‘a’ 变为 “xyz appended”,‘b’ 变为 15。现在每次使用“startFunc()” ‘a’ 和 ‘b’ 的值将保持不变,因为我们在“startFunc()”的定义中使用了 _.once() 函数。
    
    <html>
      
    <head>
        <script src=
    "https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
      </script>
    </head>
      
    <body>
        <script type="text/javascript">
            var a = 'xyz',
                b = 5;
      
            function add() {
                a += " appended ";
                b += 10;
            }
            var startFunc = _.once(add);
            console.log(a, b);
            startFunc();
            console.log(a, b);
            startFunc();
            console.log(a, b);
            startFunc();
            console.log(a, b);
        </script>
    </body>
      
    </html>

    输出:

笔记:
这些命令在 Google 控制台或 Firefox 中不起作用,因为需要添加他们没有添加的这些附加文件。
因此,将给定的链接添加到您的 HTML 文件中,然后运行它们。
链接如下:


<script type="text/javascript" src =
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js">
</script>



相关用法


注:本文由纯净天空筛选整理自Sakshi98大神的英文原创作品 Underscore.js _.once() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。