JS- 函数-形参实参-作用域

1 回顾 数组

1. 什么是数组值的有序集合数组中的每个成员称之为元素元素具有位置,称之为索引索引从 0 开始,必须是连续的2. 声明数组三种方式① 数组直接量 []② Array() 函数③ Array() 构造函数3. 数组元素的读写[] 和 索引4. 稀疏数组
5. 遍历数组
6. 数组元素的添加和删除6.1 添加数组元素① 指定下一个索引,利用 length② push()③ unshift()④ splice()6.2 删除数组的元素① 修改 length② pop()③ shift()④ splice()7. 多维数组8. 字符串的数组特性

2 函数

2.1 函数概述

① 什么是函数

  • 函数是具有特定功能的代码块。
  • 在 JavaScript,函数也是一种数据类型,属于对象类型,使用 typeof 判断函数返回 function。

② 函数的作用

  • 函数可以被调用多次,提高代码的重用性。
  • 可以把整个代码项目,通过函数模块化。
  • 封装代码,让函数内部的代码对外部不可见。

③ 函数的组成

  • 函数名
  • 参数
  • 函数体
  • 返回值

2.2 声明函数的三种方式

① function 关键字方式

function 函数名([参数列表...]) {函数体语句...;
}var fn03 = function() {console.log('天气晴朗');}fn03();

② 表达式方式

var 函数名 = function([参数列表...]) {函数体语句...;
}// 表达式方式 定义带参数的函数var fn04 = function(name,age) {console.log('我叫' + name +',年纪 '+ age+'')}fn04('王',25);

③ Function 构造函数方式(了解)

var 函数名 = new Function('函数体语句...');
var 函数名 = new Function('参数1', '参数2', '参数3', '函数体语句...');
var 函数名 = Function('函数体语句...');
var 函数名 = Function('参数1', '参数2', '参数3', '函数体语句...');// Function 构造函数方式var fn05 = new Function('console.log("我是fn05")');var fn06 = Function('name', 'age', 'console.log(name, age)');fn05();fn06('王', '25');

2.3 函数的调用和返回值

① 函数调用

  • 函数名的后面加括号,才是函数的调用,函数中的语句才可以执行。
  • 函数名后面没有括号,函数不会被调用,函数中的语句也不会执行。

② 返回值

  • 函数调用表达式(函数名+括号)的值是函数的返回值。

  • 在函数体内部,使用 return 关键字可以设置返回值,需要在 return 的右边写个表达式(表达式的值就是函数返回值)。

  • 如果函数中没有 return 或者 return 的右边没有表达式,函数默认返回 undefined。

  • return 关键字除了可以设置函数的返回值,还可以结束函数的执行,执行了 return 之后,函数体内 return 后面的代码就不会执行。

          // 函数的返回值function demo () {console.log(100);//return 100*7;}var v3 = demo();  jconsole.log(v3);  //undefined,有return 7000demo ();          //100
    
    // 定义函数function fun() {console.log('天气晴朗');return;console.log('万里无云');}fun();   //天气晴朗
    
    // return和输出的区别function fu (n1,n2) {return n1 + n2;}console.log(fu(100,200));   //300
    
    素数判断
    function isPrime(num) {// 从2开始到num-1,一次去整除numfor (var i = 2;i < num-1; i ++) {// 如果有一个能被整除,不是素数了if (num % i === 0) {return false}}// 如果能够执行到这里return true;  }console.log(isPrime(197));  //tureconsole.log(isPrime(100));  //false// 输出100-200之间的素数for (var i = 100;i <= 200; i ++) {if(isPrime(i)) {console.log(i);}}
    

2.4 函数的参数

① 形参和实参

形参: 定义函数的时候所设置的参数,形参就像没有赋值的变量, 形参的形式必须以变量名形式给出。

实参: 调用函数给的参数,用于给实参赋值,实参的形式可以是变量、直接量、表达式。

② 形参和实参的数量问题

  1. 设置了多个形参,调用函数的时候就给多少个实参。

  2. 如果实参的个数比形参多,实参按照顺序依次给形参赋值,多余的实参就没有用了。

  3. 如果实参的个数比形参少,实参按照顺序依次给形参赋值,后面的形参没有对应的实参,默认赋值为 undefined。

           // 调用函数,实参的数量<形参fn('王');    //我叫王,undefined
    

③ 形参的默认值(可选参数)

ES5 中给形参设置默认值的方式:

function 函数名(参数1,参数2) {if (参数2 === undefined) {参数2 = 默认值;}
}

ES6 中给形参设置默认值的方式:

function 函数名(参数1,参数2=默认值) {}

注意: 有默认值的形参一定要放在后面。

④ arguments

  1. arguments 只能在函数内使用,arguements 是系统定义好的变量。
  2. arguments 可以得到调用函数时给的所有的实参。
  3. arguments 是一个类数组(不是真正的的数组),可以通过索引读取其中的成员,具有 length 属性得到长度,可以使用 for 循环遍历里面的成员。
  4. JavaScript 函数中获取实参,可以通过设置形参,也可以通过 arguments。
// 定义函数,计算所有参数的和function sum()  {var res = 0;for (var i = 0;i < arguments.length; i ++) {res += arguments[i]}return res}console.log(sum(1,2,3))

2.5 作用域

① 变量的作用域

变量的作用域: 变量的可作用范围。根据变量的作用域,可以把变量分为全局变量局部变量

全局变量: 在函数外边定义的变量就是全局变量,全局变量的作用域是全局。

局部变量: 在函数内定义的变量就是局部变量,局部变量的作用域是所在的函数。

注意实现:

  1. 形参是局部变量,作用域是所在的函数。
  2. 函数名本质上是变量名,所以说函数本身也具有作用域。

② 作用域链

  1. **什么是作用域链:**函数的嵌套可以形成作用域链。
  2. 作用域链的作用: 作用域链描述变量的查找过程。 使用变量的时候,先从本作用域查找有没有声明该变量,如果没有去上层作用域查找,有就停止查找,没有继续向上层作用域查找,一直到全局作用域,如果都没有报错。
  3. 作用域链只与函数声明的位置有关系,与函数调用的位置无关!
     // 定义全局变量var username = '芳芳';// 声明函数function fn() {console.log('fn函数:', username);}// 声明函数function func() {// 定义变量var username = '大悲';// 调用 fn 函数fn();}// 调用 func()func();

JS-函数(调用返回值)-形参实参-作用域相关推荐

  1. JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  2. 让你的PHP也能执行JS并获得JS函数的返回值

    关于这个功能,我找了很久了,是因为在做某个功能接口时,由于对方在请求数据前对请求的参数进行了加密,导致了无法通过程序模拟提交数据,因此需要想办法提前处理这个参数然后再提交. 下面直接看实现过程: $j ...

  3. android 调用js怎么获取返回值_js 函数

    函数是一个特殊的对象 具名函数 function 函数名(形式参数1,形式参数2){ 语句 return 返回值 } 匿名函数 上门的具名函数,去掉函数名就是匿名函数 let a =function( ...

  4. 在c语言中怎么返回引用参数,C语言函数 函数的声明 C语言的头文件 #include的用法 形参和实参 函数的返回值 - 猫扑天空...

    C语言函数 一.是什么? 是指编程中对一块功能代码的封装,可以理解一个程序片段 二.有什么用? 可以封装代码,方便调用,提高复用性 三.怎么用? 定义:  返回值类型  函数名(形参类型 参数名1-. ...

  5. Python基础第六天——函数的使用、函数的参数、函数的返回值、函数的嵌套、命名空间、作用域、函数对象...

    一.拾遗 1.通常情况下无参函数只是进行操作,所以不需要返回值:有参数函数则需要返回值. 2.练习: 判断用户输入一串字符,如果这串字符的长度小于5则重新输入,如果大于5则退出循环. while Tr ...

  6. python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值

    一.函数参数 1.1 不定长参数 当我们定义函数时,可能需要定义一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数. 我们可以在形参前面加上一个 * ,这样这个形参就可以获取所有的实参,它将 ...

  7. if python 判断函数返回值_Python函数的返回值和作用域

    函数的返回值和作用域 1.返回值 def guess(x): if x > 3: return "> 3" else: return "<= 3&quo ...

  8. python返回函数值并退出函数_Python函数的返回值和作用域

    函数的返回值和作用域 1.返回值 def guess(x): if x > 3: return "> 3" else: return "<= 3&quo ...

  9. 一木.溪桥学Python-09:函数的返回值、函数的作用域、作用域的优先级、递归函数、内置文件中常用方法、匿名函数lambda、高阶函数

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-09:函数的返回值.作用域.作用域的优先级.递归函数.内置文件中常用方法.匿名 ...

最新文章

  1. iDempiere = OSGi + ADempiere 一款ERPCRMSCM系统、助力中小企业发展
  2. html option ajax,Ajax实现简单下拉选项效果【推荐】
  3. Python-接口自动化(七)
  4. 可视化利器 —— t-SNE(matlab toolbox 的使用与解释)
  5. 基于ZigBee设计的天气监测系统
  6. 8cm等于多少像素_像素和厘米的换算
  7. Sentinel Slot扩展实践-流控熔断预警实现
  8. e470c拆机图解全拆 thinkpad_THINKPAD e470硬盘拆解教程是?
  9. 菜鸟学四轴控制器之6:刀具半径补偿算法
  10. Unity3D 实现背包系统
  11. 毕业论文_页眉+页码
  12. USB WDM驱动开发实例 bulkusb
  13. 2021年中式烹调师(初级)考试题及中式烹调师(初级)试题及解析
  14. 计算机主板电池没电的状态,电脑主板电池没电引起的故障检查修理_提示CMOS电池电量不足怎么办...
  15. computer_network CPT实验
  16. html转m3u8地址,[转]m3u8直播测试地址
  17. 气体全自动切换汇流排液晶控制系统
  18. 回顾2017:谈谈过去一年的成长
  19. 爬虫动态IP和静态IP的区别
  20. K8s之就绪探针和存活探针

热门文章

  1. java date 转换sql date_java.util.Date和java.sql.Date之间的转换
  2. 使用google map实现周边搜索的功能_「转」“搜索”的原理,架构,实现,实践,面试不用再怕了...
  3. pythonunicode和str_Python中的str与unicode处理方法
  4. 列举5个python内置函数和使用方法_Python基础-----函数、内置函数、递归等练习
  5. Linux下的设备管理、磁盘分区及分区类型的修改
  6. windows 2008 R2远程桌面无法本地复制文件到远程解决
  7. 漏洞payload 靶机_学生会私房菜【20200707期】Wordpress 4.6 任意命令执行漏洞
  8. 微信小程序实现选项卡
  9. unity中Animation与Animator的区别
  10. 模板方法设计模式(未完待续)