JavaScript Function 函数深入总结

JavaScript Function 函数深入总结

ID:42562963

大小:134.81 KB

页数:43页

时间:2019-09-17

JavaScript Function 函数深入总结_第1页
JavaScript Function 函数深入总结_第2页
JavaScript Function 函数深入总结_第3页
JavaScript Function 函数深入总结_第4页
JavaScript Function 函数深入总结_第5页
资源描述:

《JavaScript Function 函数深入总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、整理了JavaScript中函数Function的各种,感觉函数就是一大对象啊,各种知识点都能牵扯进来,不单单是 Function 这个本身原生的引用类型的各种用法,还包含执行环境,作用域,闭包,上下文,私有变量等知识点的深入理解。函数中的return1. return 语句可以不带有任何返回值,在这种情况下( return; 或函数中不含 return 语句时),函数在停止执行后将返回 undefiend 值。这种用法一般在需要提前停止函数执行而又不需要返回值的情况下。2. return false 可

2、以阻止元素的默认事件。3. return 返回的是其所在函数的返回值4.functionn(){5.(function(){6.return5;7.})();8.}9.n();//undefined10.//立即执行匿名函数中的return语句其实是返回给它所在的匿名函数的。11.12.functionn(){13.varnum=(function(){14.return5;15.})();16.console.log(num);}Function类型函数实际上是对象,每个函数实际上都是 Function

3、 类型的实例。而且与其他引用类型一样具有属性和方法。函数名实际上是一个指向内存堆中某个函数对象的指针。定义函数的方式1.函数声明2.functionsum(num1,num2){3.returnnum1+num2;}4.函数表达式5.varsum=function(num1,num2){6.returnnum1+num2;};定义了一个变量 sum 并将其初始化为一个函数,注意到 function 关键字后面并没有函数名,这是因为在使用函数表达式定义函数,没必要使用函数名,通过变量 sum 即可引用函数。

4、还要注意函数末尾有个分号,就像声明其他变量一样。7. new 构造函数,虽然这种用法也是函数表达式,但该用法不推荐。因为这种语法会导致解析两次代码(第一次是解析常规的ECMAScript代码,第二次是解析传入构造函数中的字符串),影响性能。使用 Function 构造函数,构造函数可以接受任意数量的参数,但最后一个参数始终都被看成是函数体,前面的参数则枚举出了新函数的参数。1.varsum=newFunction('num1','num2','returnnum1+num2;');2.sum;//3.fu

5、nctionanonymous(num1,num24./**/){5.returnnum1+num2;}当使用不带圆括号的函数名是访问函数指针,而非调用函数。理解参数ECMAScript中所有参数传递的都是值(即使是引用也是传递的地址值,不是引用传递参数(可参考JavaScript传递参数是按值传递还是按引用传递))。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。之所以这样,是因为ECMAScript中的参数在内部是用一个数组表示的。函数接收到的始终都是这个数组,而

6、不关心数组中包含哪些参数。在函数体内,可以通过 arguments 对象来访问这个数组。从而获取传递给函数的每个参数。functionfunc(){console.log(Object.prototype.toString.call(arguments));}func();//[objectArguments]1.关于 arguments 的行为,它的值永远与对应命名参数的值保持同步。因为 arguments 对象中的值会自动反映到对应的命名参数。所以修改 arguments[1] ,也就修改了 num2

7、 。不过这并不是说读取这两个值会访问相同的内存空间,它们的内存空间是独立的,但他们值会同步(WHY??),要是JavaScript能直接访问内存就好了验证一下。2.但如果只传入了一个参数,那么 arguments[1] 设置的值不会反映到命名参数中,这是因为 arguments 对象的长度是由传入参数个数决定的,不是由定义函数时的命名参数个数决定的,没有传递值的命名参数将自动被赋予 undefiend 值,这就跟定义了变量但没初始化一样。3.functiondoAdd(num1,num2){4.conso

8、le.log(arguments.length);5.console.log(num2)6.arguments[1]=10;7.console.log(num2);8.}9.doAdd(5,0);//201010.doAdd(5);//1undefiendundefined没有重载ECMAScript函数不能像传统意义上那样实现重载,而在其他语言中(Java),可以为一个函数编写两个定义,只要这两个定义的签名(接收参数的类型和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。