通過一個例子來理解下arguments與arguments.callee的具體區別:
代碼如下:
復制代碼 代碼如下:
<script type="text/javascript">
function check(args){
var ac = args.length;
var ex = args.callee.length;
document.write("ac:" + ac + '<br>');
document.write("ex:" + ex + '<br>');
if (ac != ex) {
document.write("wrong number of arguments: expected: " + ex + "; actually passed" + ac + '<br>');
}
}
function f(x, y, z) {
check(arguments);
document.write(x + y + z);
}
</script>
調用方法:
復制代碼 代碼如下:
<input name="wr" type="button" value="調用" onclick="f(1,2)" />
運行後的結果為:
復制代碼 代碼如下:
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){}"