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
学艺不精 望多指教 谢谢
网友评论