JS基础(三)

函数

概念

函数是被设置为执行特定任务的代码块,执行结束后将结果返回

语法

声明语法

function 函数名 (参数列表) {
    函数体
}

调用语法

    函数名(传递的参数列表)

在这里插入图片描述

有返回值的函数

当调用某个函数,这个函数会返回出一个结果。
不是所有的函数都需要返回值,比如 alert(‘弹框’)

函数返回值

return

语法:

return 数据(要返回的内容)
<script>
        function getSum(x,y) {
            return x + y
            // 返回两数之和
        }
        let sum = getSum(5,4)
        document.write(sum)
    </script>

注意:

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

作用域

  • 一般来说,一段代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
  • 作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

类型

  1. 全局作用域

    全局有效
    作用于代码执行的整个环境(整个script标签内部或者一个独立的js文件)

  2. 局部作用域

    局部有效
    作用于函数内的代码环境,就是局部作用域
    也称为函数作用域,在函数外无法访问函数内的变量

  3. 块级作用域

    通过let声明定义的变量,在{}里面形成的区域。
    块作用域 由 { } 包括,if语句和for语句里面的{ }等

根据作用域不同,变量分为:

  1. 全局变量
  2. 局部变量
  3. 块级变量
    注意:
  • 如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当全局变量看
  • 函数内部的形参可以看做是局部变量

变量访问原则——作用域链

作用域互相嵌套,形成一个完整的链条,就叫做作用域链
在这里插入图片描述


<script>
// 全局作用域
        function fn() {
            // 局部作用域
            function inner() {
                // 局部作用域
            }
        }
        /* 对inner函数来说,它的作用域链:
            inner() ——> fn() ——>全局作用域
        */
 </script>

采取就近原则的方式来查找变量最终的值
注意:

  • 只要是代码,就至少有一个作用域
  • 写在函数内部的局部作用域
  • 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链

匿名函数

函数分为两类

  1. 具名函数
// 声明:
function fn() {
}
// 调用:
fn()
  1. 匿名函数
function() {
}
// 调用

 // 把匿名函数赋值给变量,这个方式就是函数表达式
        let fn2 = function (){
            console.log('这个函数被调用了')
        }
   // 执行
		fn2()

在这里插入图片描述

使用:webAPI中使用

立即执行函数

目的:
避免全局变量之间污染
比如声明变量时如果都在全局变量声明会出现重复的情况,这时候就可以使用立即执行函数将变量声明在函数内部,使它成为局部变量

语法

//方法一:
( function () { console.log(11) } ) ();
// 方法二:
( function () { console.log(11) } ());


注意:

  • 不需要调用,立即执行
  • 多个立即执行函数要用 ; 隔开,要不然会报错

例如:


 <script>
        let num1
        let num2
        let num3
        (function () {
            let num1
            let num2
            let num3
        })()
    </script>


posted @   Tricia11  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示