原文地址:http://www.cnblogs.com/polk6/p/3284839.html
JavaScript function函数种类
本篇主要介绍普通函数、匿名函数、闭包函数
目录
1. 普通函数:介绍普通函数的特性:同名覆盖、arguments对象、默认返回值等。
2. 匿名函数:介绍匿名函数的特性:变量匿名函数、无名称匿名函数。
3. 闭包函数:介绍闭包函数的特性。
1. 普通函数
1.1 示例
function ShowName(name) {
alert(name);
}
1.2 Js中同名函数的覆盖
在Js中函数是没有重载,定义相同函数名、不同参数签名的函数,后面的函数会覆盖前面的函数。调用时,只会调用后面的函数。
var n1 = 1;
function add(value1) {
return n1 + 1;
}
alert(add(n1));//调用的是下面的函数,输出:3
function add(value1, value2) {
return value1 + 2;
}
alert(add(n1));//输出:3
1.3 arguments对象
arguments 类似于C#的params,操作可变参数:传入函数的参数数量大于定义时的参数数量。
function showNames(name) {
alert(name);//张三
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);//张三、李四、王五
}
}
showNames('张三','李四','王五');
1.4 函数的默认返回值
若函数没有指明返回值,默认返回的是'undefined'
function showMsg() {
}
alert(showMsg());//输出:undefined
2.匿名函数
2.1 变量匿名函数
2.1.1 说明
可以把函数赋值给变量、事件。
2.1.2 示例
//变量匿名函数,左侧可以为变量、事件等
var anonymousNormal = function (p1, p2) {
alert(p1+p2);
}
anonymousNormal(3,6);//输出9
2.1.3 适用场景
①避免函数名污染。若先声明个带名称的函数,再赋值给变量或事件,就造成了函数名的滥用。
2.2 无名称匿名函数
2.2.1 说明
即在函数声明时,在后面紧跟参数。Js语法解析此函数时,里面代码立即执行。
2.2.2 示例
(function (p1) {
alert(p1);
})(1);
2.2.3 适用场景
①只需执行一次的。如浏览器加载完,只需要执行一次且后面不执行的功能。
3. 闭包函数
3.1 说明
假设,函数A内部声明了个函数B,函数B引用了函数B之外的变量,并且函数A的返回值为函数B的引用。那么函数B就是闭包函数。
3.2 示例
3.2.1 示例1:全局引用与局部引用
function funA() {
var i = 0;
function funB() { //闭包函数funB
i++;
alert(i)
}
return funB;
}
var allShowA = funA(); //全局变量引用:累加输出1,2,3,4等
function partShowA() {
var showa = funA();//局部变量引用:只输出1
showa();
}
allShowA是个全局变量,引用了函数funA。重复运行allShowA(),会输出1,2,3,4等累加的值。
执行函数partShowA(),因为内部只声明了局部变量showa来引用funA,执行完毕后因作用域的关系,释放showa占用的资源。
闭包的关键就在于作用域:全局变量占有的资源只有当页面变换或浏览器关闭后才会释放。var allShowA = funA() 时,相当于allShowA引用了funB(),从而使funB()里的资源不被GC回收,因此funA()里的资源也不会。
3.2.2 示例2:有参闭包函数
function funA(arg1,arg2) {
var i = 0;
function funB(step) {
i = i + step;
alert(i)
}
return funB;
}
var allShowA = funA(2, 3); //调用的是funA arg1=2,arg2=3
allShowA(1);//调用的是funB step=1,输出 1
allShowA(3);//调用的是funB setp=3,输出 4
3.2.3 示例3:父函数funA内的变量共享
function funA() {
var i = 0;
function funB() {
i++;
alert(i)
}
allShowC = function () {// allShowC引用匿名函数,与funB共享变量i
i++;
alert(i)
}
return funB;
}
var allShowA = funA();
var allShowB = funA();//allShowB引用了funA,allShowC在内部重新进行了绑定,与allShowB共享变量i
3.3 适用场景
①保证函数funA内里的变量安全,因为外部不能直接访问funA的变量。
分享到:
相关推荐
JavaScript中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念...
JavaScript 中函数与对象的解析 JavaScript 中的函数与对象是掌握 JavaScript 语 言的基础。JavaScript 语 言与 C++、Java 等语 言在语法上类似,但其函数具有独特性。本文将深入了解 JavaScript 语言中的函数与...
### 理解JavaScript中函数的使用 在现代软件开发中,JavaScript已成为不可或缺的一部分,尤其在Web前端领域更是举足轻重。对于开发者而言,掌握JavaScript中的函数使用至关重要,因为函数是实现模块化编程的基础之...
这在递归函数中特别有用,可以提高性能。 八、函数式库 JavaScript有许多函数式编程库,如Ramda和Lodash的FP模式,它们提供了丰富的函数式工具,简化了编写函数式代码的过程。 九、惰性求值 虽然JavaScript本身不...
在这个例子中,每个按钮的点击事件都会打印出自己的索引号,而不是最后一个按钮的索引号,这是因为`bind`改变了事件处理函数中的`this`指向。 #### 五、结论 通过本文的讲解和示例,我们可以看到JavaScript中的...
这些函数可以被传递给其他函数,例如在高阶函数中,也可以作为其他函数的结果返回。这种能力使得JavaScript具备了函数式编程的基本特征。 其次,JavaScript支持词法作用域和闭包,这是函数式编程中重要的概念。闭包...
内容概要:本文详细介绍了 JavaScript 中的函数与作用域。首先解释了函数的基本概念,包括函数声明、函数表达式、匿名函数、箭头函数、函数参数与返回值。接着讨论了 JavaScript 中的全局作用域、局部作用域、块级...
在JavaScript编程中,函数是构成应用程序逻辑的基本构件。理解JavaScript中函数的概念对于编写有效和高效的代码至关重要。以下知识点是基于提供的文件信息进行详细解释。 一、执行环境 执行环境是JavaScript中一个...
不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...
在深入探讨JavaScript函数的广泛应用与特性之前,让我们首先明确一点:JavaScript函数不仅是编程语言中的核心组件,更是实现复杂逻辑、封装功能模块的关键所在。不同于许多传统面向对象的语言,JavaScript通过其独特...
JavaScript函数式编程是一种编程范式,它强调将计算视为数据处理的过程,并且重视函数作为第一类公民,即函数可以作为...阅读相关书籍,例如"javascript函数式编程",将帮助你更好地掌握这些概念并应用于实际项目中。
在本文档中,提到的核心知识点是关于JavaScript中的高阶函数。高阶函数是指至少满足下列一个条件的函数:它可以接受一个或多个函数作为参数,也可以返回一个函数。下面将详细解释与高阶函数相关的几个关键概念。 ...
1. JavaScript函数的基本写法 JavaScript函数可以通过function关键字来定义。基本语法结构如下: ```javascript function 函数名() { // 函数体 } ``` 例如: ```javascript function myFunction() { console.log...
而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...
JavaScript函数的这些特性为我们提供了更多的编程灵活性。 首先,我们要明确一点,JavaScript中的函数是引用类型的数据。这意味着,当你声明一个函数并将其引用赋值给另一个变量时,这两个变量实际上是指向内存中同...
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
JavaScript中函数表达式和函数声明是创建函数的两种基本方式,它们在语法和行为上有所区别。函数声明(Function Declaration)和函数表达式(Function Expression)的不同之处在于它们在代码中的处理方式和使用时机...
JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数(ppt)JavaScript之函数...
JavaScript中的函数作为对象是语言设计的一个独特特性,它赋予了函数更多的灵活性和强大的功能。首先,函数在JavaScript中是第一类对象,这意味着它们可以像普通对象一样被赋值给变量、作为参数传递以及作为返回值。...