js基础第四天

一、函数

  • 为什么需要函数?
    函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用

  • 函数是什么?
    function执行特定任务的代码块

  • 函数使用:

    // 使用function定义一个函数
    function 函数名称(){
          函数体
}

1.函数名称的命名规则和规范
规则:和变量命名规则一样:可以包含数字,字符,_ ,$,不能以数字开头
规范:小驼峰,一般以动词开头,代表这个函数的功能

2.函数的调用:函数名()
a. 函数声明的时机,是在 js 刚进入执行环境的时候 (函数声明会提前) (声明时机不是运行到这一行了才声明,不像我们的 let 变量一样)
b.函数可以多次调用,可以在任何时刻调用

3.函数体:
函数体是函数的构成部分,它负责将相同或相似代码“包裹”起来,直到函数调用时函数体内的代码才会被执行。函数的功能代码都要写在函数体当中。

  • 函数传参
    形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
    实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
    开发中尽量保持形参和实参个数一致
    //带参的函数:模型
    // 形参
    function getSum(num1,num2){
      // 实际执行效果,相当于声明了变量
      // 变量声明,但没赋值:默认值为undefined
      // let num1
      // let num2
    }

    // 实参
    // 相当于赋值操作
    // num1 = 20
    // num5 = 50
    getSum(20,50)
  • 函数返回值
    有返回值函数的概念:当调用某个函数,这个函数会返回一个结果出来;这就是有返回值的函数
    当函数需要返回数据出去时,用return关键字

返回值注意事项:
1.在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用
2.函数内部只能运行到 1 次 return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写
3.return会立即结束当前函数
4.函数可以没有 return,这种情况函数默认返回值为 undefined

  • 作用域

全局作用域:作用于所有代码执行的环境(整个 script 标签内部)或者多个 js 文件;
局部作用域:作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域;
块级作用域:块作用域由 { } 包括,if语句和for语句里面的{ }等

变量的作用域,在JavaScript中,根据作用域的不同,变量可以分为
全局变量:函数外部let 的变量;全局变量在变量定义之后区域可以访问和修改;
局部变量:函数内部let的变量;局部变量只能在当前函数内部访问和修改;
块级变量:{} 内部的let变量;let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问;

变量作用域特殊情况:
1.如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐
2.函数内部的形参可以看做是局部变量,所以形参相当于函数内部定义的局部变量,只有在函数内部可以使用。

变量访问原则-作用域链:
1.只要是代码,就至少有一个作用域
2.写在函数内部的局部作用域
3.如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
4.根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
作用域链:采取就近原则的方式来查找变量最终的值

  • 匿名函数
    函数分为两种:
    具名函数:声明:function fn() {} -------调用:fn()
    匿名函数:function() {}

1.匿名函数语法:将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式

      // 将函数做为一个变量进行定义,它不会全局的,也就没有全局污染
      // 匿名不能单独的存在,它一般
      // 1.做为变量的值--函数表达式
      // 2.做为参数传递--回调函数
      let fn = function() {
        console.log('fn')
      }
      fn()

其中函数的形参和实参使用跟具名函数一致
注意:两个匿名函数之间,要加上 ;

        (function () {
            console.log(123)
        })();
        (function () {
            console.log(234)
        }());

2.立即执行函数

        // 方式一
        // ()把里面的代码当做一个表达式【返回一个值】
        (function () {
            console.log(11);
        })();
        // 方式二
        // 把里面的代码当做一个表达式
        (function () {
            console.log(11);
        }());
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容