函数的定义方式
- 函数声明方式function关键字(命名函数)
- 函数表达式(匿名函数)
- new Function()
var fn = new Function('参数1','参数2','函数体')
- function里面参数都必须是字符串格式
- 第三种方式执行效率低,不方便书写
- 所有函数都是Function的实例(对象)
- 函数也属于对象
函数内的this指向
改变函数内部的this指向
1、call方法
call()方法调用一个对象,简单理解为调用函数的方式,但是它可以改变函数的this指向
2、apply方法
apply()方法调用一个函数,简单理解为调用函数的方式,但是它可以改变函数的this指向
fun.apply(thisArg,[argsArray])
- thisArg:在fun函数运行时指定的this值
- argsArray:传递的值,必须包含在数组里面
- 返回值就是函数的返回值,因为它就是调用函数
3、bind方法
bind()方法不会调用函数,但能改变函数内部this指向
fun.bind(thisArg,arg1,arg2)
- thisArg:在fun函数运行时指定的this值
- arg1,arg2:传递的其他参数
- 返回由指定的this值和初始化参数改造的原函数拷贝
严格模式
开启严格模式
严格模式可以应用到整个脚本和个别函数中,可以分为为脚本开启严格模式和为函数开启严格模式
1、为脚本开启严格模式
为整个脚本开启严格模式,需要在所有语句之前放一个特定语句 “use strict ”(‘use strict’)
2、为函数开启严格模式
在函数内写一个特定语句use strict
严格模式中的变化
变量规定
1、在正常模式中,一个变量没有声明就赋值,默认是全局变量,严格模式禁止这种写法,变量必须先