當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()函數的函數將變量“ a”乘以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”的值會附加到“ append”字符串中,因此變成“xyz appended”。因此,首次調用的輸出為“xyz appended”。然後,下次調用“ startFunc()”時,應該再次附加“ a”的值,但這不會發生。這是因為“ startFunc()”在其定義中具有函數“ _.once()”,從而使其無法執行多次。因此,第二個和第三個調用的輸出將與第一個相同,即“xyz appended”。在第一行中,將在調用“ startFunc()”之前打印“ a”的值,因此輸出為“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”變量將附加“ append”字符串,並且“ 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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。