The main purpose of arguments is to save parameters, but it also has the callee attribute. 1. callee points to the function of the arguments object. example 1: 1 function calture (num) {// factorial calculation 2 if (num <= 1) return 1; 3 else {4 return num * calture (num-1 ); 5} 6} A calture call is made in the Code. this is very unfavorable in future code maintenance. if the name of the function outside is changed one day, it will not be changed. You will understand the consequences. this problem can be optimized like this: 1 function calture (num) {// factorial calculates 2 if (num <= 1) return 1; 3 else {4 return num * arguments. callee (num-1); 5} 6} 2: caller stores the reference of the function that calls the current function. If it is called in a global scope, its value is null. copy code 1 function Me () {2 You (); 3} 4 function You () {5 alert (You. caller); 6} 7 Me (); copy code effect: optimize the code above: Copy code 1 function Me () {2 You (); 3} 4 function You () {5 alert (arguments. callee. caller); 6} 7 Me (); copy the code