- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JS函数function
一、理解函数的本质:1.函数也相当于数据,只不过是一段代码块,便于反复调用, 是进行模块化程序设计的基础,我们可以把它们看作数据(data)。函数也是数据作为值得函数函数本身就是变量,所以函数也可以作为值来使用script function get(functions,argument){第一个参数接受函数引用,第二个参数接受参数return functions(argument);}function sum(num){return num+100;}console.log(get(sum,100));/script 输出200可以像传参数一样把一个函数传递给另一个函数,也可以将一个函数作为另一个函数的结果返回script function get(functions,argument){return functions+argument;}function sum(){return 500;}console.log(get(sum(),100));/script 返回 600 函数作为执行后的值返回2.JavaScript会为我们定义的每一个函数都创建一个原型对象.所以JavaScript中的每个函数都是一个对象.函数引用类型 :var function = new Function();函数对象本质:在解释器内部,当遇到函数声明这种语法时,就会自动构造一个Function对象,将函数作为一个内部的对象来存储和运行。调用函数:可知一个函数对象名称(函数变量)和一个普通变量名称具有同样的规范,都可以通过变量名来引用这个变量,但是函数变量名后面可以跟上括号和参数列表来进行函数调用。因为函数都是对象,它们有自己的属性和方法。(name属性 length属性 prototype属性 )函数的name属性:通过这个属性可以 访问到给定函数指定的名字,这个属性永远等于跟在function 关键字后面的标识符.length属性:返回定义的函数的形参个数prototype属性:原型,定义了toString() call() apply();方法3.函数和方法的区别?函数立足于它们自己(例如:alert()),而方法是函数内部一个对象的属性(dictionary),我们通过对象来调用方法。每个JavaScript对象都有一个toString()方法(基于函数原型)每个JavaScript函数都会有很多附属的(attached)方法,包括toString()、call()以及apply()(基于函数原型)。二、函数创建1.函数声明法function sum(){} 编译器加载的时候会提升函数预先加载到编译器2.函数表达式字面量法var sum = function(){}; 是一条语句后面需要加上分号 加载时不提升,顺序加载到时,执行匿名函数function(){} 称为函数表达式延伸:采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。var print = function x(){console.log(typeof x); //function};x() // x is not definedprint()上面定义的函数 同时写了函数名,这个x只在函数体内部可用,指代函数表达式本身,其他地方都不可用。这种写法的用处有两个:一是可以在函数体内部调用自身,二是方便除错(除错工具显示函数调用栈时,将显示函数名,而不再显示这里是一个匿名函数)。递归计算var sum =function fib(num) { if (num 2) { return fib(num - 2) + fib(num - 1); //递归调用自己 也可用arguments.callee(num) } else { return 1; }}sum(6)返回8注意:函数的表达式需要在语句的结尾加上分号,表示语句结束。而函数的声明在结尾的大括号后面不用加分号。3.匿名函数function(){} 没有函数名,定义时会报错,编译器加载时会误解function为函数声明,所以需要把函数表达式包成代码块(function(){}),延伸:立即执行函数(function(){}())(function(){})()void function(){}() 定义函数表达式没有返回值或为undefined也是个表达式据说效率最高new function(){} 也是立即执行new function(){}() 如果传参数,可加上后面的()立即执行函数的本质:Javascript 的解析器在解析器解析全局的function或者function内部function关键字的时候, 默认
文档评论(0)