透過一個例子來理解下arguments與arguments.callee的具體差異: 程式碼如下: 複製程式碼 程式碼如下: <br /> function check(args){ <br /> var ac = args.length; <br /> var ex = args.callee.length; <br /> document.write("ac:" ac '<br>'); <br /> document.write("ex:" ex '<br>'); <br /> if (ac != ex) { <br /> document.write("wrong number of arguments: expected: " ex "; actually passed" ac '<br>'); <br /> <br /> } <br /> } <br /> function f(x, y, z) { <br /> check(arguments); <br /> document.write(x y z); <br /> } <br /> 呼叫方法: 複製程式碼 程式碼如下: 運行後的結果為: 複製程式碼 程式碼如下: ac:2 ex:3 wrong number of arguments: expected: 3; actually passed2 NaN 我的理解: arguments即呼叫對象,就是呼叫這個方法的物件 arguments.callee即當前對象,其實就是傳回目前執行的函數物件 透過這個例子,可以看出 arguments其實是指函數「f(1,2)」 argument.callee其實是指"function f(x,y,z){}"