千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

函数
1 定义和调用函数
- 函数定义(又称函数声明、函数语句)形如
function name(parameterlist) { statements }
,其中parameterlist
是逗号分隔的参数列表。return
语句可以返回值。数据类型传参采用传值,对对象(包括Array)属性的修改会对外部可见。 - 函数表达式与函数声明形式类似,但作为语句的一个部分,其中
name
可选。也可以通过Function
构造函数从字符串里构造出函数。函数表达式不会提前。 - 方法是一种作为对象属性的函数。
- ES6支持默认形参,以及
...name
的方式声明剩余形参,其中name
是存放额外参数的数组。 - 注意:函数声明会被提前。函数表达式赋值的对象会被提前,但其值为
undefined
。 - 函数调用语法和其他语言一样,可以递归。函数本身也是对象,可以通过
apply
方法或call
方法调用。
2 作用域和函数栈
- 在函数内,可以访问函数内定义的变量(及函数)以及父函数所能访问到的变量(及函数),但不能访问到子函数的变量(及函数)。
- 在函数内部,可以通过
arguments.callee
引用自己,也可以通过arguments[index]
和arguments.length
获取参数及其个数。注意:arguments
不是数组。函数调用提供的参数和函数声明提供的参数数目不一致,提供少了的参数是默认参数或(没默认参数)undefined
,提供多了的参数可以通过arguments
访问。
3 嵌套函数和闭包
- 嵌套函数会形成闭包,闭包内引用的外层作用域的变量会被保留,直到该闭包销毁。闭包按引用捕获外层变量。
- 注意:内层作用域会屏蔽外层作用域的同名变量。闭包不捕获
this
,闭包中的this
变量为其调用者而非创建者。对于普通函数this
是(构造函数)一个全新的对象或(strict模式的函数调用)undefined
或(以对象方法的形式调用)原始对象。
4 箭头函数
- 语法形式如
(parameters, ...) => { statements }
或者(parameters, ...) => expression
创建一个箭头函数。当形参个数为1个时,可省略括号,支持默认形参和剩余形参。箭头函数没有自己的this
、arguments
、super
和new.target
。 - 注意:箭头函数捕获
this
,箭头函数中的this
变量为其创建者而非调用者。
5 预定义函数
eval
:执行字符串中的JS代码;isFinite
、isNan
:判断是否是有限数字和NaN;parseFloat
、parseInt
:解析字符串返回数字,parseInt
还可以选择基数;encodeURI
、decodeURI
:将URI中的某些字符(不改变URI本身的地址)转换为转义字符,和转换回去;encodeURIComponent
、decodeURIComponent
:将整个URI的某些字符转换为转义字符,和转换回去。