前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >JavaScript笔记(5)

JavaScript笔记(5)

作者头像
y191024
发布2022-09-20 20:05:50
发布2022-09-20 20:05:50
3510
举报

又到了熟悉的函数,看了下发现和Python没太大区别...挺幸运的,所以前100多个视频学习起来一点都不吃力

01

JS函数

概念:

在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可以需要大量重复使用.虽然for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用JS中的函数.

函数:

就是封装了一段可被重复调用执行的代码块,通过次代码可以实现大量代码的重复使用.

函数的使用:

1.声明函数 2.调用函数

声明函数

function 函数名 ( ) {

函数体

}

  • 调用的时候千万不要忘记加小括号
  • 口诀:函数不调用,自己不执行

注意: 声明函数本身并不会执行代码,只有调用函数时才会执行.

函数的封装

  • 函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口.
  • 简单理解:封装类似于将电脑配件整合组装到机箱中,类似快递打包.

带有形参和实参的函数

// 声明函数

function 函数名 (形参1, 形参2...) {

函数体

}

// 调用函数

函数名(实参1, 实参2...) 用函数

形参和实参

参数

说明

形参

形式上的参数,函数定义时传递的参数,当时并不知道是什么

实参

实际上的参数,函数调用时传递的参数,实参是传递给形参的.

形参和实参个数不匹配

  • 如果实参的数量多于形参,则多出来的不参与运算.
  • 如果实参的数量少于形参,形参可以看做是不用声明的变量,没有实参对应的形参是一个变量,声明了但是没有给值,结果就是undefined,如果有数字与之相加,结果就是NaN.

在JS中,形参的默认值是undefined.

函数的返回值 return

function 函数名 ( ) {

return 需要返回的结果

}

函数名( )

  • 我们函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名( ),通过return实现的.
  • 只要函数遇到return,就把后面的结果,返回给函数的调用者,函数名=return后面的结果.

return 终止函数

  • return只能返回一个值,只会返回最后一个值
  • return语句之后的代码不会被执行.
  • 如果我们想要返回多个值,我们可以return[数组],将结果存放在数组中.

没有return,函数返回的结果是undefined.

arguments的使用(只有函数有)

当我们不确定有多少个参数传递的时候,可以用arguments来获取.在JS中,arguments实际上它是当前函数的一个内置对象.所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参.

arguments其实是个伪数组:

  • 具有length属性
  • 按索引方式存储数据
  • 不具有数组的pop,push方法

现在我们将所有的实参存储在arguments里,我们将他打印出来,符合我们上面说的伪数组的特点.

案例:用函数翻转数组

函数是可以相互调用的

function fn1 ( ) {

函数体

fn2( )

}

function fn2 ( ) {

函数体

}

fn1( )

这个就是调用函数的例子.

函数的两种声明方式:

  • 利用函数关键字自定义函数(命名函数) function fun( ) { }
  • 函数表达式(匿名函数) var fun = function( ) { }
    • fun是变量名,不是函数名,所以这个函数没有名字
    • 函数表达式声明方式和声明变量差不多,只不过变量里面存放的是值,而函数表达式里存放的是函数
    • 函数表达式也可以进行传递参数

02

作用域

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

变量的两种类型

1.全局变量 2.局部变量

全局变量:

图中的num就是全局变量,在函数中也能使用.

局部变量:

这张图中的num就是局部变量,只能在函数内部使用,外面是用不了的.

注意!

  • 如果在函数内部没有声明直接赋值的变量也属于全局变量.
  • 函数的形参也能看做是局部变量.

从执行效率看全局变量和局部变量

  1. 全局变量:只有浏览器关闭的时候才会销毁,比较占内存资源
  2. 局部变量:当我们程序执行完毕就会销毁,比较节约内存资源

JS中没有块级作用域,JS的作用域有全局作用域和局部作用域,现阶段我们没有块级作用域,JS也是在es6得到时候新增的块级作用域.

比如说:

JS就可以在外面调用num

作用域链

内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构我们称为作用域链,就近原则

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

num是先在fn函数(近)中找,没有的话就再返回上一级,到全局变量(远)中去找.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 02
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档