<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Function Study</title>
<script>
function test(a,b) {
//
if(arguments.length===arguments.callee.length) {
document.write(test.length)
document.write('<br>');
document.write(a+b);
document.write('<br>');
}else{
alert('The count of arguments is wrong.');
document.write('<br>');
return;
}
document.write('======================' + '<br>');
}
test(10,20);
test();
test('aaa','bbb','ccc');
function fact(a) {
if(a==1){
return 1;
}else{
return a*fact(a-1);
}
}
function Fact(a) {
if(a==1){
return 1;
}else{
return a*arguments.callee(a-1);
}
}
window.document.write(fact(5) + '<br>');
window.document.write(Fact(5) + '<br>');
var F = Fact;
Fact = null;
window.document.write(F(5) + '<br>');
var f = fact;
fact = null;
//WRONG
window.document.write(f(5)) + '<br>';
</script>
</head>
<body>
</body>
</html>
- 函数的参数:arguments对象
arguments是表示函数的实际参数(与形参无关)
- callee函数(回调函数属性)
arguments对象的秘密属性 callee属性:
这个属性比较奇怪,他能返回arguments对象所属的函数的引用,这相当于在自己的内部调用自己。
用法:例如检测函数传递的参数正确与否