js函数

作者: 周周很可爱 | 来源:发表于2019-10-08 17:16 被阅读0次

1.函数声明

function fn(){

 }

函数声明有函数声明提升的过程 ,只要你写了,就可以访问到里面的变量

比如:

 console.log(sum(10,20));    // 返回值是30
 function sum(num1,num2){
  return num1 + num2;
 }   

2,函数表达式

var fn = function (){};
var fn = new Function("num1","num2","return num1+num2");

函数表达式必须等到解析器执行到它所在的代码行,才会真正的被解析。

例如:

console.log(sum(10,20));   // 会报错,显示sum is not a function
at
  var sum = function(num1,num2){
  return num1 + num2;
  }

这就是解析器还没有解析到函数,函数没有被解析,所以会报错

可以同时使用函数声明和函数表达式,

例如:

var sum = function sum(){};

**3.函数是对象,函数名是指针

例如:
 function sum(num1,num2){
  return num1 + num2;
  }
 console.log(sum(10,10));  //   返回20
  var anotherSum = sum;
  console.log(anotherSum(10,10));  //返回 20
 sum = null;
 console.log(sum(10,10));
  console.log(anotherSum(10,10));

4.函数没有重载

function addSomeNumber(num){
 return num + 100;
}
 function addSomeNumber(num){
 return num + 200;
}
console.log(addSomeNumber(100));  // 返回300

如何模拟函数重载
话不多说,上代码

 function fn(){
 if(arguments.length == 1){
  return arguments[0] +10;
   }else if(arguments.length == 2){
  return arguments[0] +arguments[1];
 }
}
 fn(100);
fn(100,100);

var fn = (function factorial(num){
 if(num <= 1){
 return 1;
 }else{
  return num*factorial(num-1);
 }
});
var val = fn(5);
console.log(val);   // 返回 200  

函数内部属性 arguments.callee; callee是指针,指向拥有这个arguments对象的函数。

caller保存着调用当前的函数的引用。

function outer(){
inner();
}
function inner(){
   alert(inner.caller);
}
outer();
屏幕快照 2019-10-08 下午5.05.07.png

学艺不精 望多指教 谢谢

相关文章

网友评论

      本文标题:js函数

      本文链接:https://www.haomeiwen.com/subject/nhtipctx.html