1.return返回值
数字、字符串、布尔、函数、对象(元素、数组、json、null)、未定义
(1)函数名称加括号就等于return后面的值
(2)所有函数默认返回值:未定义
(3)return后面任何代码都不执行了
//fn1(); =>100 alert(fn1()); //100 alert(typeof fn1());//number function fn1(){ return 100; } //fn2=function(){alert(1);},所以它不会执行函数 alert(fn2()); //function(){alert(1);} fn2()(10);//10 function fn2(){ return function(a){ alert(a); } } fn3().onload=function(){ document.body.innerHTML="123"; } function fn3(){ return window; }
应用getId函数
function getId(elem){ return document.getElementById(elem); } //获取id名称为box的元素 getId("box");
获取元素$()函数
function $(v){ if(typeof v ==='function'){ window.onload=v; }else if(typeof v==='string'){ return document.getELementById(v); }else if(typeof v==='object'){ return v; } }
小应用
function fn1(n){ var arr=[]; for(var i=1;i<=n;i++){ arr.push(i); } return arr; } alert(fn1(5)); //[1,2,3,4,5] alert(fn1(7)); //[1,2,3,4,5,6,7]
2.实参arguments ---实际传递的参数
fn1(1,2,3); //实参---实际传递的参数 function fn1(a,b,c){ //形参-----形式上,a、b、c这些名代表1、2、3 //arguments=>[1,2,3]---------实参的集合 alert(arguments.length) } //当函数的参数无法确定的时候:用arguments alert(sum(1,2,3));//6 alert(sum(1,2,3,4));//10 function sum(){ var n=0; for(var i=0;i<arguments.length;i++){ n+=arguments[i]; } return n; }
实参arguments作用域之间的关系
var a=1; function fn1(a){ arguments[0]=3; alert(a); //3 var a=2; alert(argument[0]); //2 } fn1(a); alert(a); //1