1 创建函数
1-1 直接量的方式
function go(a){
console.log(a)
}
1-2 变量声明的方式
var go = function(a){
console.log(a)
}
1-3 构造函数
var go = new Function('a','b','alert(a*b)');
go(2,3);
2 函数返回值
# 什么是函数的返回值
定义:函数的执行结果
函数可以没有return
说明:
1.函数会在执行完return语句之后停止,并立即退出
2.return语句也可以不带任何返回值,用于提前停止函数执行
function show(){
return "hello world" //return的作用:把结果返回到函数外部
}
var b = show(); // 在哪调用返回到哪里;
函数return之后,return后面的语句就不会执行了
作用:将函数内部的值返回外部
function go(){
return "hello world";
console.log("good"); // 不会执行
}
console.log(go()); // hello world
3 函数的参数
可变参(不定参)arguments
参数的个数可变,参数数组
//对传入的参数求和
function total(){
let result = 0;
for(let i=0;i<arguments.length;i++){
result+=arguments[i];
}
return result;
}
var a = total(2,3,3);
console.log(a);
3-1 重载
重载:就是根据参数的不同,动态决定调用哪个方法
js中没有重载的概念,因为重复声明,下面的会覆盖上面的
//js中没有重载的概念,因为重复声明,下面的会覆盖上面的
function go(a){
console.log(a);
}
function go(a,b){
console.log(a+b);
}
使用arguments对象模拟重载
function go(){
if(arguments.length==1){
console.log(arguments[0]);
}else if(arguments.length==2){
console.log(arguments[0]+arguments[1]);
}
}
go(1)
go(10,20)
4 函数作为对象的方法
var obj = {
name:"zheng",
sayName(){
console.log(this.name);
},
sayAge:()=>{
console.log(18);
},
saySkill:function(){
console.log("javascript");
}
}
5 回调函数
回调函数 就是这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。
这个过程就叫做回调。
场景:一般在异步调用中使用
作用:
1.将函数内部的值返回到外部
2.取代了return语句
var show = function(res){
console.log(res);
}
function go(callback){
var a = 10;
callback(a)
}
go(show)
/* go(function(res){
console.log(res);
})
callback = function(res){
console.log(res)
}
*/
6 函数的调用流程
1、函数调用的时候会生成一个容器,去放置局部变量
2、形参如果没有赋值,默认值为undefined;
3、如果形参和函数名,基于函数优先级别高。形参的值为函数
var test = function(num){
console.log(num);
var num =20;
function num(){
console.log("hello world")
}
console.log(num)
}
test(10);
解析
1、函数调用的时候num =10
2、基于声明提前 num= function(){
console.log("hello world")
}
所以第一段输出function
3、执行到num =20 覆盖
所以之后输出20