1. 程式人生 > 實用技巧 >理解函式呼叫_使用嚴格模式邊使用arguments別名

理解函式呼叫_使用嚴格模式邊使用arguments別名

<!DOCTYPE html>
<html lang="en">
<head>  
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../unitl/test.js"></script>
    <style>
        #results li.pass {color:green;}
        #results li.fail {color:red;}
    </style>
</head>
<body>
    <ul id="results"></ul>
</body>
<script>



    "use strict";

    function infiltrate(person) {

        // person引數和arguments的第一個值開始是相同的。
        assert(person==='gardener','The person is a gardener');

        // 改變第一個引數
        assert(arguments[0] === 'gardener','The first arguments is a gardener');

            
        //改變第一個引數
        arguments[0] = 'ninja';

        //第一個引數值被改變了
        assert(arguments[0] === 'ninja','The first argument is now a ninja');

        //Person引數的值沒變   
        assert(person==='gardener','The person is still a gardener');

    }

    

    
    infiltrate("gardener");


</script>
</html>
    

第一個程式碼use strict是一個簡單的字串。
這將告訴javascript引擎,我們希望將下面的程式碼在嚴格模式下執行。在本例中,嚴格模式將改變成的執行結果,最終person引數的值和arguments引數的第一個值,
將不再相同。

      assert(person==='gardener','The person is a  gardener');
      assert(arguments[0] === 'gardener','The first argument is a gardener');

但與非嚴格模式不同的是,這一次arguments物件不再作為引數的別名。如果你想通過arguments[0]='ninja'改變第一個引數的值,這將不會同時改變person引數。

      assert(arguments[0]==='ninja','The first argument is now a ninja');
      assert(person==='gardener','The person is still a gardener');