【黑马程序员pink老师前端】JavaScript函数与作用域

java 学习笔记指路
基础知识

Python转java补充知识
Java中常见的名词解释

前端

【黑马程序员pink老师前端】HTML
【黑马程序员pink老师前端】JavaScript基础大总结
【黑马程序员pink老师前端】JavaScript函数与作用域
【黑马程序员pink老师前端】JavaScript对象

数据库

【黑马程序员数据库】数据库基础大总结
【黑马程序员数据库】数据库引擎
【黑马程序员数据库】数据库索引

SQL编程

【牛客】SQL刷题篇入门篇
【牛客】SQL刷题篇进阶篇

Java 框架

spring框架学习
Mybatis-plus 快速入门
Maven基础
Zookeeper初认识
HTTP简介
Tomcat
Servlet
vue入门

目录

  • 1、函数❤️
    • 1.1 函数的使用⭐
      • ①声明函数
      • ②调用函数
    • 1.2 函数的封装⭐
    • 1.3 函数的参数⭐
      • 1.3.1 形参和实参
      • 1.3.2 形参和实参个数不匹配
    • 1.4 函数的返回值⭐
      • 1.4.1、return语句
      • 1.4.2、return 终止函数
      • 1.4.3、return 的返回值
      • 1.4.5、区别
    • 1.5 arguments的使用⭐
    • 1.6 函数的两种声明方式⭐
      • 1.6.1 自定义函数方式(命名函数)
      • 1.6.2 函数表达式方式(匿名函数)
  • 2 作用域❤️
    • 2.1、全局作用域⭐
    • 2.2、局部(函数)作用域⭐
    • 2.3、JS 没有块级作用域⭐
  • 3 变量的作用域❤️
    • 3.1、全局变量⭐
    • 3.2、局部变量⭐
    • 3.3、区别⭐
  • 4 作用域链❤️

1、函数❤️

函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。

1.1 函数的使用⭐

函数在使用时分为两步:声明函数调用函数

①声明函数

function 函数名()
{
     //函数体代码
}
  • function 是声明函数的关键字,注意小写

②调用函数

//通过调用函数名来执行函数体代码
函数名(); 

调用的时候不要忘记添加小括号

1.2 函数的封装⭐

函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口。

1.3 函数的参数⭐

1.3.1 形参和实参

声明函数时,可以在函数名称后面的小括号中添加的参数,被称为形参,而在调用函数时,在函数名称后面的小括号中添加的参数,被称为实参

// 声明函数,可以定义任意多的参数,用逗号分隔
function 函数名(形参1, 形参2 , 形参3...)
{
  // 函数体
}
// 调用函数
函数名(实参1, 实参2, 实参3...); 

实参和形参的多个参数之间用逗号分隔,

1.3.2 形参和实参个数不匹配

参数个数 说明
实参个数等于形参个数 输出正确结果
实参个数多于形参个数 只取到形参的个数
实参个数小于形参个数 多的形参定义为undefined,结果为NaN

1.4 函数的返回值⭐

1.4.1、return语句

function 函数名()
{
    return  需要返回的值;
}
函数名();    // 此时调用函数就可以得到函数体内return 后面的值

如果函数没有 return ,返回的值是 undefined

1.4.2、return 终止函数

return 语句之后的代码不被执行

1.4.3、return 的返回值

return 只能返回一个值。如果用逗号隔开多个值,以最后一个为准

var resNum = add(21,6); // 调用函数,传入两个实参,并通过 resNum 接收函数返回值
alert(resNum);          // 6

1.4.5、区别

break、continue、return 的区别

  • break : 结束当前循环体(如 for、while)
  • continue :跳出本次循环,继续执行下次循环(如for、while)
  • return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码

1.5 arguments的使用⭐

当不确定有多少个参数时,可以用 arguments 来获取。arguments 是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参

arguments展示形式是一个伪数组,因此可以进行遍历,伪数组具有以下特点:
​ ①:具有 length 属性
​ ②:按索引方式储存数据
​ ③:不具有数组的 push , pop 等方法

1.6 函数的两种声明方式⭐

1.6.1 自定义函数方式(命名函数)

利用函数关键字 function 自定义函数方式

// 声明定义方式
function fn() {...}

// 调用  
fn();  

1.6.2 函数表达式方式(匿名函数)

// 这是函数表达式写法,匿名函数后面跟分号结束
var fn = function(){...};

// 调用的方式,函数调用必须写到函数体下面
fn();
  • 因为函数没有名字,所以也称为匿名函数
  • 这个fn 里面存储的是一个函数
  • 函数调用的代码必须写到函数体后面

2 作用域❤️

限定名字可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
JavaScript (ES6前) 中的作用域有两种:

  • 全局作用域
  • 局部作用域(函数作用域)

2.1、全局作用域⭐

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

2.2、局部(函数)作用域⭐

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

2.3、JS 没有块级作用域⭐

  • 块作用域由 {} 包括
  • 在其他编程语言中,在 if 语句、循环语句中创建的变量,仅仅只能在本 if 语句、本循环语句中使用,如下面的Java代码:
if(true)
{
    int num = 123;
    System.out.println(num);	// 123
}
System.out.println(num);		// 报错

JS 中没有块级作用域(在ES6之前)

if(true)
{
    int num = 123;
    System.out.println(num);	// 123
}
System.out.println(num);		// 123

3 变量的作用域❤️

3.1、全局变量⭐

全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)

  • 全局变量在代码的任何位置都可以使用
  • 在全局作用域下var声明的变量 是全局变量

3.2、局部变量⭐

在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)

  • 局部变量只能在该函数内部使用
  • 在函数内部 var 声明的变量是局部变量
  • 函数的形参实际上就是局部变量

3.3、区别⭐

  • 全局变量:优点:在任何一个地方都可以使用,缺点:占内存
  • 局部变量:缺点:只在函数内部使用,当其所在的代码块被执行时,会被初始化;优点:节省内存空间

4 作用域链❤️

  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
  • 作用域链:采取就近原则的方式来查找变量最终的值。
var num = 10;
funtion fn()
{     //外部函数
    var num = 20;
    function fun() 
    { //内部函数
        console.log(num);  // 20 ,一级一级访问
    }
}

你可能感兴趣的:(前端,#,JavaScript,javascript,前端,Java,html,css3)