1、函数的创建
1.1、以直接量的方式创建(推荐)
tips:在函数前后调用都是可以的
function go(){console.log("hello world")}
1.2、以变量的方式创建
tips:只能在函数之后调用
var b = function(){console.log("good")}b();
2、函数的返回值
定义:函数的执行结果
<script>/* 函数的返回值函数的执行结果tips:1、函数调用之后,return后面的语句不会执行2、函数遇到return语句会立即停止,退出3、return语句的作用,将函数内容的值返回给外部*/function go(){return 10;console.log("hello world")}var res = go();console.log(res)</script>
2.1、函数return之后,return后面的语句就不会执行了
作用:将函数内部的值返回外部
function go(){return "hello world";console.log("good"); // 不会执行}console.log(go()); // hello world
3、函数的参数
函数的参数是局部变量 js传不定参
<script>function go(a,b){/* 函数的参数是局部变量 */console.log(a);console.log(b);}/*function go(var a,b){console.log(a);console.log(b);}*//* tips:js传不定参 */go();go(10)go(10,20)</script>
4、重载
重载:就是根据参数的不同,动态决定调用哪个方法
 js中没有重载的概念,因为重复声明,下面的会覆盖上面的
使用function声明的方法,本质上是window的方法
<script>/* 使用function声明的方法,本质上是window的方法 */function go(a){console.log(a)}function go(a,b){console.log(a);console.log(a+b);}window.go(10);go(10,20)</script>
重载:函数名相同,参数不同,根据传入的参数动态决定调用那个方法  JS不支持重载
就要JS支持  arguments对象
 JS传不定参,函数使用arguments对象管理函数内部的参数
function go(){console.log(arguments)}go(10,23,4)
4.1、使用arguments对象模拟重载
<script>/*一个参数二个参数*/function go(){if(arguments.length ==1){console.log(arguments[0])}else if(arguments.length==2){console.log(arguments[0]);console.log(arguments[0]+arguments[1])}}// go(10)go(10,20)</script>
5、函数的对象
函数作为对象的方法
var obj ={name:"html",sayName:function(){console.log(this.name)}}/* 函数是对象的一个方法 */obj.sayName();this关键字指向问题1、onclick 谁执行事件,this指向谁2、谁执行方法,this指向谁
6、回调
回调函数就是这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。
场景:一般在异步调用中使用作用:
1.将函数内部的值返回到外部
2.取代了return语句
6.1、jquery中的回调
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script></head><body><!-- 回调函数 --><button id="btn">btn</button><script>$("#btn").click(function(){console.log("hello")})</script>
6.2、js回调
<script>/* 回调函数:就是将函数作为函数传递给另一个函数使用场景:异步问题*/var show= function(a){console.log(a)}function go(callback){var b = 10;callback(b);/* show(b); */}go(show);</script><script>function go(callback){var b = 20;callback(b);}go(function(res){console.log(res)})</script>
