JS面向对象编程--第三章 函数

来源:互联网 发布:淘宝的隐形眼镜靠谱吗 编辑:程序博客网 时间:2024/06/08 04:33
  • 定义和使用函数
  • 函数传参
  • 预定义函数
  • JS中的变量作用域
  • 函数也是数据,视为特殊的数据类型
  • 本章第二部分
  • 匿名函数的调用
  • 回调函数
  • 即时(自调)函数
  • 内嵌函数(函数内部定义的函数)
  • 以函数为返回值的函数
  • 能重定义自身的函数
  • 闭包

一、如果某个函数没有明显的返回值,默认为undefined
一个函数只能返回一个值(多个用数组)


内建变量 arguments —返回函数所接受的所有参数
它不是数组,而是对象


二、预定义函数
1.parseInt(X,10/16/8进制)
if(true)整数类型输出
else return NaN

2.parseFloat()
转换为十进制数 //遇到第一个异常字符就放弃,parseInt也是

3.isNaN()
是否是可参与算术运算的数字,检测parseInt/Float是否成功
NaN === NaN return false

4.isFinite()
检查输入是一个既非NaN又非Infinity的数字

5.encodeURI()/encodeURIComponent()
前者返回一个可用的URL,后者认为我们传递的仅仅是URL的一部分

6.eval()
将输入的字符串当做JS来执行
Eval is evil (Eval 是魔鬼)
(1).安全性方面
(2)性能方面–执行两次 ,一次解析字符串,一次执行JS


三、变量的作用域
如果变量在某个函数中定义,函数以外不可见
if/for代码块中,代码块外可见

1.变量提升
JS进入新的函数时,内部定义的变量都会被提升到函数最开始的地方,并且被提升的只有变量的声明,赋值不会提升

四、函数也是数据

var f=function(){    return 1;}

上面这种方式叫做函数标识记法

1.匿名函数
没有名字的函数

var f=function(a){    return a;};

优雅的用法:

1.作为参数传递给其他函数
2.执行某些一次性任务

2.回调函数
将函数A传递给函数B,并由B来执行A时,A就成了一个回调函数,如果A还是一个无名函数,称它为匿名回调函数

1.不做命名的情况下传递函数(节省变量名的使用)
2.函数调用操作委托给另一个函数(节省代码编写工作)
3.有助于提升性能

4.回调示例

multiplyByTwo(a,b,c,function(a){    return a+1;});合并参数*2并且都+1的操作

4.即时函数
()();
不会产生任何全局变量,无法重复执行

5.内部(私有)函数

有助于我们确保全局名字空间的纯净性
确保私有性————只将一些必要的函数暴露给“外部世界”

6.返回函数的函数
7.能重写自己的函数
“浏览器兼容性探测”

五、闭包
1.子函数可以访问来自自身的作用域,也可以访问来自其父级作用域,形成了一条作用域链(Scope chain)
2.利用闭包突破作用域链
将函数内部的参数/函数拓展到函数以外
未完待续,看闭包看的不想敲了。。。

0 0
原创粉丝点击