美文网首页js css html
Javascript基础笔记(3)-函数

Javascript基础笔记(3)-函数

作者: 布拉德澈 | 来源:发表于2023-02-20 15:40 被阅读0次

一、函数基本使用

函数就是语句的封装,具有“一次定义,多次调用”的优点。
使用函数可以简化代码,让代码更具有可读性

(一)、函数的定义

函数必须先定义再使用,使用\color{red}{function}关键字定义函数

//函数定义1
function  函数名(参数) { 
         // 函数体语句 
}
  • ①.function表示定义函数。
  • ②.函数名必须符合javascript标识符命名规则。
  • ③.括号中是形参列表,即使没有形参,也不能省略。
  • ④.大括号中就是函数体语句

函数表达式:var fun = function(){ //函数体语句}

  • ①function后无函数名,称之为匿名函数

(二)、函数调用

执行函数体中的所有语句,就是“调用函数”。
在函数名后书写圆括号即是调用。fun() //调用函数

(三)、函数的参数

参数是函数内的一些待定值,在调用函数时,传入参数的具体值,完成功能。
参数可多可少,也可以没有。多个参数之间用逗号隔开。

函数的参数.png
参数传递.png
  • ① arguments
    arguments表示接收到的实参列表,是一个类数组对象。
    类数组对象:所有属性均维从0开始的自然数序列,有length属性,和数组类似用方括号[]书写下标
    房屋内对象的属性值,但不能调用数组的方法。

(四)、函数的返回值

函数体内可以使用return关键字表示\color{red}{函数的返回值}
遇见return即退出函数

function sum(a, b) {
    return a + b;
}
console.log(sum(3, 5));

调用一个有返回值的函数,可以被当作一个普通值,从而以出现在任何可以书写值的地方.

function sum(a, b) {
    return a + b;
}
var result = sum(3,4) * sum(5,6);

二、递归

函数的内部语句可以调用这个函数本身,从而发起对函数的一次迭代。在新的迭代中,又会执行调用函数自身的语句,从而又产生一次迭代。当函数执行到某一次时,不再进行新的迭代,函数被一层一层返回,函数被递归。

递归要素

//递归函数
function factorial(n) {
    //求n的阶乘
    if(n==1) return 1;
    return n * factorial(n - 1);
}

三、全局变量与局部变量

(一)变量作用域

1.javascript是函数级作用域编程语言 :\color{red}{变量只在其定义时的function内部有意义}
形参也是局部变量

局部变量.png

2.全局变量:如果不将变量定义在任何函数内部,这个变量就是\color{red}{全局变量},它的任何函数内部都可以被访问和更改。

var a = 10;
function fun() {
    a++;
    console.log(a);  //输入11
}
fun();
console.log(a);   //输入11

3.遮蔽效应:如果函数中也定义了和全局同名的变量,则函数内部变量会将全局变量“遮蔽”。

(二)作用域链

函数内部也可以定义一个函数。和局部变量类似,定义在一个函数内部的函数时局部函数。

function fun() {
    function inner() {
        console.log('你好!');
    }
    inner();
}
fun();
  • 在函数嵌套中,变量会从内到外逐层寻找它的定义。
var a = 10;
var b = 20;

function fun() {
    var c = 30;
    function inner() {
        var a = 40;
        var d = 50;
        console.log(`a=${a}`, `b=${b}`, `c=${c}`, `d=${d}`);
    }
    inner();
}
fun();  //a=40 b=20 c=30 d=50

(三)闭包

function func() {
    var name = 'brad';
    function innerFun() {
        console.log(name);
    }
    return innerFun;
}
var inn = func();
inn();

javascript函数会产生闭包(closuer)。 闭包是函数本身和该函数声明时所处的环境状态的组合。


闭包.png

函数能够"记忆住"其定义时所处的环境,即使函数不在其定义的环境中调用,也能访问定义时所处环境的变量。

  • 1.javascript每次创建函数时都会创建闭包。
  • 2.闭包特性往往需要将函数"换一个地方"执行,才能被观察出来。
  • 3.闭包允许将数据与操作该数据的函数关联起来。

①-记忆性

当闭包产生时,函数所处环境的状态会始终保存在内存中,不会再外层函数调用后被自动清除。

//闭包记忆性 示例
function createCheckTemp(standerdTemp) {
    function checkTemp(n) {
        if (n <= standerdTemp) {
            console.log("检测正常");
        } else {
            console.log("参数偏高")
        }
    }
    return checkTemp;
}
var checkTemp_A = createCheckTemp(37);
var checkTemp_B = createCheckTemp(36);
checkTemp_A(39)
checkTemp_B(35)

②-模拟私有变量

相关文章

  • Javascript基础笔记(3)-函数

    一、函数基本使用 函数就是语句的封装,具有“一次定义,多次调用”的优点。使用函数可以简化代码,让代码更具有可读性 ...

  • JS相关思维导图

    javascript DOM操作 javascript windows对象 javascript函数基础 java...

  • 【JavaScript笔记】JavaScript基础_函数(5)

    函数也是对象,封装了一些功能(代码),可以调用。 欢迎大家的意见和交流 email: li_mingxie@163...

  • JavaScript | 函数与方法

    Reference : JavaScript教程 - 廖雪峰的官方网站 JavaScript函数基础 定义函数 在...

  • JavaScript函数、this以及闭包

    JavaScript笔记(三) 函数 理解函数 Javascript函数的参数与大多数其他语言中的函数的参数不同。...

  • part1整理

    函数式编程:JavaScript函数式编程指南 异步编程:异步编程 Promise源码 JavaScript基础知...

  • javaScript系列 [06]-javaScript和thi

    在javaScript系列 [01]-javaScript函数基础这篇文章中我已经简单介绍了JavaScript语...

  • JavaScript学习笔记(二)

    慕课网JavaScript进阶篇第1-6章学习笔记,JS基础语法,数组,流程控制语句,函数,事件 JavaScri...

  • js基础

    JavaScript基础 JavaScript基础语法 变量的声明 运算符 分支结构 循环结构 函数 数据结构 w...

  • JavaScript ☞ day1

    JavaScript基础学习笔记之JavaScript基础 HTML中添加JS代码、注释方法、输出方式 docum...

网友评论

    本文标题:Javascript基础笔记(3)-函数

    本文链接:https://www.haomeiwen.com/subject/tunwkdtx.html