10.26-js-函数-Arguments对象和this(调用函数,浏览器传递的两个隐含参数)

72 阅读2分钟

1.定义函数----面试时说三种即可,说明常用的

1.1使用构造函数创建函数对象---创建出来的是对象---不经常使用

image.png

1.2声明函数---常用

image.png

1.3函数表达式---本质是赋值一个匿名函数

image.png

2.函数参数----形参就相当于在函数作用域声明了变量

注意事项

1.调用函数时解析器不会检查实参的类型,所以要注意可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查

2.调用时多余的实参不会被赋值,如果实参的数量少于形参的数量,则没有对应实参的形参将会是undefined,输出的结果会是NAN

image.png

3.函数返回值---使用return对结果进行返回,return以后的代码不执行,可以返回对象,也可以是函数(可以返回任意类型的)

image.png 注意只有一个return,后面不接值的话则相当于return undefined;continue是跳出当次循环,break退出当前循环(比如for循环),return结束整个函数

image.png image.png

4.作用域---js有两种作用域:全局作用域和函数作用域(局部作用域)

4.1全局作用域---变量起作用的区域---不使用var声明的都会变为全局变量

全局作用域中创建的变量会作为window对象的属性保存,创建的函数会作为window对象的方法保存 image.png

4.2函数作用域---作用域链

注意取到全局变量可以通过window.b取到,不使用var声明的都会变为全局变量 image.png 注意在函数作用域也有声明提前的特性,使用var关键字声明的变量,会在函数中所有的代码执行之前被声明(先输出会返回undefined);函数声明也会在函数中所有的代码都执行之前执行。

4.3变量提升---注意函数的变量提升---只有声明方式创建的函数有函数提升

image.png

5.闭包

image.png

6.构造函数(首字母大写、调用通过new关键字调用)

6.1构造函数介绍及创建实例----每调用一次函数就会创建一个新的函数作用域,他们之间相互独立

image.png

创建一个构造函数实例 image.png

6.2instanceof使用

instanceof---判断复杂类型的对象:判断是不是某个类的实例

如果判断基础数据类型则是false image.png

构造函数与普通函数的区别

6.3构造函数修改

image.png

7.this

image.png

8.Arguments对象---arguments 是一个对应于传递给函数的参数的类数组对象---不定义形参,也可以去使用实参---callee属性指向参数所属的当前执行的函数

不定义形参,也可以去使用实参 image.png 使用

image.png

image.png

9.立即执行函数

image.png 可以进行传参

image.png