这篇文章主要介绍了浅谈JavaScript的对象类型之function,函数(方法)是由事件驱动的或者当它被调用时执行的可重复使用的代码块,需要的朋友可以参考下
一、Function
定义函数
例如:
调用函数
例如:
js中的函数调用特点,对参数的类型和个数都没有限制,例如:
默认参数
java中(spring)要实现默认参数的效果
js实现的效果
匿名函数
语法:
例如:
第一种场景:定义完毕后立刻调用
第二种场景:作为其他对象的方法,例如:
页面有元素:
此元素有一个onclick方法,会在鼠标单击这个元素后被执行,onclick方法刚开始是null,需要赋值后才能使用
箭头函数
- 如果没有参数,() 还是要保留
- 如果只有一个参数,() 可以省略
- 如果函数体内只有一行代码,{} 可以省略
- 如果这一行代码就是结果,return 可以省略
例如:
二、函数是对象
1、可以参与赋值,例如,匿名函数也能参与赋值
2、有属性、有方法,执行console.dir(abc),输出结果如下:
其中带有 f 标记的是方法,不带的是属性
带有 ➡ 符号的可以继续展开,限于篇幅省略了
带有
[[ ]]
的是内置属性,不能访问,只能查看相对重要的是
[[Prototype]]
和[[Scopes]]
会在后面继承和作用域时讲到
3、可作为方法参数
4、可作为方法返回值
三、函数作用域
函数可以嵌套(js代码很常见,只是嵌套形式很多时匿名函数,箭头函数)
例如:
- 以函数为分界线划定作用域,所有函数之外是全局作用域
- 查找变量时,由内向外查找
- 在内层作用域找到变量,就会停止查找,不会再找外层
- 所有作用域都找不到变量,报错
- 作用域本质上是函数对象的属性,可以通过 console.dir 来查看调试
四、闭包
- 函数定义时,它的作用域已经确定好了,因此无论函数将来去了哪,都能从它的作用域中找到当时那些变量
- 别被概念忽悠了,闭包就是指函数能够访问自己的作用域中变量
五、let、var与作用域
如果函数外层引用的是let变量,那么外层普遍的{}也会作为作用于边界,最外层的let也占一个script作用域
如果函数外层引用的是var变量,外层普遍的{}不会视为边界
如果var变量出现了重名,则他俩会被视为同一作用域中的同一变量
如果是let,则视为两个作用域中的两个变量
要想里面的e和外面的e能区分开来,最简单的办法是改成let,或者用函数来界定作用域范围
到此这篇关于浅谈JavaScript的对象类型之function的文章就介绍到这了,更多相关JavaScript 对象类型function内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!