js之函数

81 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

函数

函数的定义

function 函数名(){
​
}

比如:

function sum(){
    var a = 10;
    var b = 20;
    console.log(a+b);
}

函数的执行

函数名();

比如:

sum();
  • 函数分为四种情况 参数=>小括号里面的内容,当小括号里面没有内容的时候,那么叫做无参 返回值 return => 需要返回给函数调用这
  1. 无参无返回值 => 函数执行的函数没有传参传过去,那边也没有接收,如果没有return返回的,那么表示没有返回值
//函数定义
function fn(){
}
fn();//函数执行
  1. 有参有返回值 => 函数执行的时候有参数传过去,那边也要接收,有return返回值,接收的时候,需要接收函数的返回值
function fn(a,b){
    return a+b;
}
fn(10,20);
  1. 无参有返回值 => 函数执行的函数没有传参传过去,那边也没有接收,有return返回值,接收的时候,需要接收函数的返回值
function fn(){
    return "H52206你们好!"
}
fn();
  1. 有参无返回值 => 函数执行的时候有参数传过去,那边也要接收,如果没有return返回的,那么表示没有返回值
function fn(a,b){
    console.log(a+b);
}
fn(10,20);
  • 函数的作用:
  1. 减少代码的冗余
  2. 即用,你要想用的时候,直接调用一下fn就可以了
  3. 封装,复用
  • 函数的分类 我们上午所接受的函数叫做声明式函数,还有另外一种叫做赋值式函数

语法:

var fn = function(){    //这种叫做赋值式函数,因为函数后面没有名字,所以我们有可以说这个是一个匿名函数
​
}
fn();//函数执行(函数调用)
  • arguments arguments 是一个伪数组,具备数组的某一些特性,但是不是一个数组 应用场景一般是我们在封装一个函数的时候,不确定别人传入过来的参数的个人, 那么我们可以使用arguments来接收这些参数
  • 函数当中细节
  1. 当函数没有返回值的时候,在调用这个函数的时候,强行接收返回值,得到的结果 undefined
  2. 在调用函数的时候,如果没有添加括号,表示找到那个函数,(),小括号表示将那个函数给执行了 注意: 小括号总结: 1. 提供运算符的优先级 2. 调用这个函数 3. 括号可以表示参数
  • IIFE 函数自执行
// ()()     =>      前面那个括号表示的就是运算符优先运算,后面那个括号表示执行
(function(){
    console.log("这是一个IIEF,函数自执行");
})();
  • 函数与事件的结合 事件: 在某一个元素身上,触发了某一个事务,所执行一段函数

语法:

<div id="box">我是div</div>
// 触发了一个点击事件,就是说当我们在div盒子上面触发点击事件,要执行一段函数
box.onclick = function(){//没有名字的函数,匿名函数
    console.log("你点击了那个div,触发了这个匿名函数");
}

作用域

域 => 范围 作用域 => 作用的范围

  • 全局作用域 script里面,function外面 这里面定义的变量叫做全局变量
  • 局部作用域 function 里面 这里面定义的变量,局部变量
  • 变量的访问机制
  1. 先在当前作用域下面查找,如果找到了,那就使用当前作用域下面的变量,如果找不到就外找
  2. 外面找到了,那就使用外面的变量,如果一直都找不到,那么就是报错 这种查找机制形成了一个链条,那么我们叫做他为作用域链