JavaScript函数

75 阅读3分钟

为什么需要函数?

函数:function,是被设计为执行特定任务的代码块

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

1、可以实现代码复用,提高开发效率

2、function执行特定任务的代码块

3、封装程序功能

1、函数使用

语法:

function 函数名() {
    函数体
    // 函数体是函数的构成部分,它负责将相同或相似代码“包裹”起来,直到函数调用时函数体内的代码才会被执行。函数的功能代码都要写在函数体当中。
​
}
// 函数需要调用才会执行
函数名()
​
function sayHi() {
    docment.write('hai~')
}
satHi()

命名规范:

和变量命名基本一致 尽量小驼峰式命名法 前缀应该为动词 命名建议:常用动词约定

2、函数传参

语法:

形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数) 实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)

形参和实参一一对应

如果实参个数多余形参,多余的实参无效。

如果形参个数多余实参,多余的形参值为undefined

function 函数名(参数1,参数2,...,参数n) {
    函数体
}
​
function getSum(num1,num2) { // 形参接收实参的值
      document.write(num1 + num2); // 使用形参
    }
    getSum(100,200); // 传入实参

形参可以理解为是在这个函数内声明的变量(比如 num1 = 100)实参可以理解为是给这个变量赋值

3、函数返回值

返回值函数的概念: 当调用某个函数,这个函数会返回一个结果出来 这就是有返回值的函数

使用函数返回值:

    function getMax() {
      // 100 就是 函数在执行完毕的时候 会返回的数据
      return 100;
    }
​
    let num1 = getMax(); // num1 =100
​
    console.log(num1); // 100

细节:

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

4、作用域

全局作用域

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

局部作用域

作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域

块级作用域

块作用域由 { } 包括,if语句和for语句里面的{ }等

作用域链

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

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

5、匿名函数(了解)

语法:

let fn = function () {
    // 函数体
}
​
fn()  // 函数名()

6、立即执行函数(暂了解)

语法:

// 方式1
(
    function () {
        console.log(11);
    }
)();
​
// 方式2
(
    function () {
        console.log(11);
    }()
);

注意:

无需调用,立即执行,其实本质已经调用了 多个立即执行函数之间用分号隔开

作用:

防止变量污染