- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JavaScript权威指南
JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次。如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法。用于初始化一个新创建的对象的函数被称作构造函数。
相对于其他面向对象语言,在JavaScript中的函数是特殊的,函数即是对象。JavaScript可以把函数赋值给变量,或者作为参数传递给其他函数,甚至可以给它们设置属性等。
JavaScript的函数可以嵌套在其他函数中定义,这样定义的函数就可以访问它们外层函数中的任何变量。这也就是所谓的“闭包”,它可以给JavaScript带来强劲的编程能力。
1.函数定义
函数使用function关键字定义,有函数语句和函数表达式两种定义方式。
//一.函数语句类:
//打印对象所有属性名称和值。
function printprops(obj) {
for (var key in obj) {
console.log(key + : + obj[key]);
}
}
//计算阶乘的递归函数,函数名称将成为函数内部的一个局部变量。
function factorial(n) {
if (n = 1) return 1;
return n * factorial(n);
}
//二.函数表达式类:
//计算n的平方的函数表达式。这里将一个函数赋给一个变量。
var square = function (x) { return x * x; }
//兔子数列。函数表达式也可以包含名称,方便递归。
var foo = function foo(n) {
if (n = 1) return 1;
else foo(n - 1) + foo(n - 2);
}
//数组元素升序排列。函数表达式也能作为参数传递给其他函数。
var data = [5, 3, 7, 2, 1];
data.sort(function (a, b) { return a - b; });
//函数表达式有时定义后立即调用。
var tensquared = (function (x) { return x * x; }(10));
函数命名
函数名称要求简洁、描述性强,因为这样可以极大改善代码的可读性,方便别人维护代码;函数名称通常是动词或以动词开头的词组。通常来说,函数名编写有两种约定:
一种约定是函数名第一个单词首字母小写,后续单词首字母大写,就像likeThis();
当函数名包含多个单词时,另一种约定是用下划线来分割单词,就像like_this()。
项目中编写方法名时尽量选择一种保持代码风格一致。还有,对于一些私有函数(不作为公用API的一部分),这种函数通常以一条下划线作为前辍。
2.函数调用
函数声明后需要通过调用才能被执行。JavaScript中通常有4种方式来调用函数:
作为普通函数;
作为对象方法;
作为构造函数;
通过它们的call()和apply()方法间接调用。
下面就通过一些具体示例来演示上述4中函数的调用方式。
1.对于普通函数,通过调用表达式就可直接调用,这种方式很直接也很常见。
//定义一个普通函数。
var strict = function () { return !this; }; //检测当前运行环境是否为严格模式。
//通过函数名直接调用。
console.log(strict());
注:根据ES3和非严格的ES5对普通函数调用的规定,调用上下文(this)是全局对象;在严格模式下,调用上下文则是undefined。
2.通常,保存在对象属性里的JavaScript函数被称作“方法”。
//定义一个对象直接量。
var calc = {
a: null,
b: null,
add: function () { //将函数保存在对象属性中。
return this.a + this.b;
}
};
//通过对象名调用方法。
calc.a = 1, calc.b = 2;
console.log(calc.add());
注:对象方法中的调用上下文(this)不同于普通函数中的上下文。这里this指代当前对象。
方法链:当方法返回值是一个对象,那么这个对象还可以再调用它的方法。每次调用的结果都是另外一个表达式的组成部分,这种方法调用方式最终会形成一个序列,也被称为“方法链”。所以,在自己设计API的时候,当方法并不需要返回值时,最好直接返回this。这样以后使用API就可以进行“链式调用”风格的编程。
需要注意的是,this是一个关键字,Javas
您可能关注的文档
最近下载
- 王力《古代汉语》教案.doc
- 排球大单元教学计划18课时.doc VIP
- 开学第一课(课件)七年级英语上册(人教版2024).pptx VIP
- 2024年GD省生态环境监测专业技术人员大比武模拟试卷及答案-3应急监测.pdf VIP
- 鸿蒙HarmonyOS应用开发者高级认证练习题及答案01.docx
- 文献检索的方法以及技巧ppt课件.docx VIP
- 2024年某省生态环境监测专业技术人员大比武模拟试卷及答案-3应急监测.pdf VIP
- 2025年乡镇农技站高标准农田建设管理员招聘面试题库附答案.doc VIP
- 锚杆长度检测课件.pptx VIP
- 2025年乡镇农技站高标准农田建设管理员招聘面试专项练习含答案.doc VIP
文档评论(0)