JS的9种内置函数——Function
| 分类: js的9种内置函数 |
1、Function构造函数 vs 函数声明 vs 函数表达式 vs 立即执行函数
注意:函数声明跟函数表达式的区别:
1)函数定义的方式不一样。
2)函数声明执行的时候会前置,函数表达式只是变量的提升,如果在函数表达式和函数前面运行函数,函数声明可以正常运行,函数表达式就不可以。
3)函数表达式,这种定义方式在闭包及一些架构中使用较多。
函数实际上是一个对象,每个函数都是Function类型的实例,函数名实际上是指向某个对象的指针,不与某个函数绑定。
Function的构造函数可以接收任意数量的参数,但最后一个参数始终被看做函数体。这种方式有个缺点,会导致解析两次代码,第一次是基础的ES代码解析,第二次是解析传入构造函数中的字符串,这样会导致性能的下降,在此写出是帮助理解js中函数其实是对象这个概念。不推荐使用。
2、函数没有重载的概念
js的函数名实际上是指向函数对象的指针,因此函数名可以说是一个函数的唯一标识,跟参数列表并没有关系,因此并不会出现同名的两个函数(因为一个指针同时只能指向一个对象),从而不存在重载的两个概念,如果有两个相同的函数,第二个会覆盖第一个函数。
3、参数arguments对象
js不介意函数传递进来多少个参数,也不在乎传进来的参数是什么数据类型。因为js中函数的参数在内部是一个数组表示的。函数接收的始终都是一个数组,并不会关心数组中包含哪些参数。在函数体内,可以通过arguments对象来访问这个数组。从而获取传递给函数的每个参数。
http://s15/mw690/003xds7Kzy7ii2FD9BYee&690
注意:length代表的是参数的个数,代表执行是参数的个数,不是定义函数是参数的个数决定。如果定义函数是两个参数,执行的时候只传递了一个参数,没有传递的参数将自动被赋值给undefiend,这就跟定义了变量但是没有初始化一样。
注意:length代表的是参数的个数,代表执行是参数的个数,不是定义函数是参数的个数决定。如果定义函数是两个参数,执行的时候只传递了一个参数,没有传递的参数将自动被赋值给undefiend,这就跟定义了变量但是没有初始化一样。
注意:也可以fn.length,代表的是函数可以接受几个参数,而不是运行时传递了几个参数。
es6中的函数api参考链接http://blog.sina.com.cn/s/blog_c112a2980102xphm.html
前一篇:Vue——混入
后一篇:箭头函数和普通函数的区别

加载中…