Home Web Front-end JS Tutorial Detailed explanation of JavaScript function types_javascript skills

Detailed explanation of JavaScript function types_javascript skills

May 16, 2016 pm 03:14 PM
function function javascript

This article mainly introduces ordinary functions, anonymous functions, and closure functions

Table of Contents

  • Ordinary functions: Introduces the characteristics of ordinary functions: overrides with the same name, arguments objects, default return values, etc.
  • Anonymous functions: Introducing the characteristics of anonymous functions: variable anonymous functions, nameless anonymous functions.
  • Closure function: Introduces the characteristics of closure function.

1. Ordinary functions
1.1 Example

1

2

3

function ShowName(name) {

  alert(name);

}

Copy after login

1.2 Overwriting of functions with the same name in Js

In JS, functions are not overloaded. If you define functions with the same function name and different parameter signatures, the later functions will overwrite the previous functions. When called, only the following functions will be called.

1

2

3

4

5

6

7

8

9

10

11

12

var n1 = 1;

  

function add(value1) {

  return n1 + 1;

}

alert(add(n1));//调用的是下面的函数,输出:3

  

function add(value1, value2) {

  return value1 + 2;

}

alert(add(n1));//输出:3

Copy after login

1.3 arguments object

arguments is similar to C#'s params, operating variable parameters: the number of parameters passed into the function is greater than the number of parameters when defined.

1

2

3

4

5

6

7

function showNames(name) {

  alert(name);//张三

  for (var i = 0; i < arguments.length; i++) {

    alert(arguments[i]);//张三、李四、王五

  }

}

showNames('张三','李四','王五');

Copy after login

1.4 Default return value of function

If the function does not specify a return value, the default return value is 'undefined'

1

2

3

4

function showMsg() {

}

alert(showMsg());//输出:undefined

  

Copy after login

2. Anonymous function
2.1 Variable anonymous function

2.1.1 Description
Functions can be assigned to variables and events.

2.1.2 Example

1

2

3

4

5

//变量匿名函数,左侧可以为变量、事件等

var anonymousNormal = function (p1, p2) {

  alert(p1+p2);

}

anonymousNormal(3,6);//输出9

Copy after login

2.1.3 Applicable Scenarios
①Avoid function name pollution. If you first declare a function with a name and then assign it to a variable or event, you will abuse the function name.

2.2 Nameless anonymous function

2.2.1 Description
That is, when the function is declared, it is followed by the parameters. When JS syntax parses this function, the code inside is executed immediately.

2.2.2 Example

1

2

3

(function (p1) {

  alert(p1);

})(1);

Copy after login

2.2.3 Applicable Scenarios
①It only needs to be executed once. If the browser is loaded, the function only needs to be executed once and will not be executed later.

3. Closure function
3.1 Description

Assume that function A declares a function B inside, function B refers to a variable outside function B, and the return value of function A is a reference to function B. Then function B is a closure function.

3.2 Example

3.2.1 Example 1: Global reference and local reference

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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();

}

Copy after login

allShowA is a global variable that references function funA. Repeatedly running allShowA() will output the accumulated values ​​​​of 1, 2, 3, 4, etc.

Execute the function partShowA(), because only the local variable showa is declared internally to reference funA. After execution, due to the scope, the resources occupied by showa are released.

The key to closure is scope: the resources occupied by global variables will only be released when the page changes or the browser is closed. When var allShowA = funA(), it is equivalent to allShowA referencing funB(), so that the resources in funB() will not be recycled by GC, so the resources in funA() will not be recycled either.

3.2.2 Example 2: Parametric closure function

1

2

3

4

5

6

7

8

9

10

11

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

Copy after login

3.2.3 Example 3: Variable sharing within parent function funA

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

Copy after login

3.3 Applicable Scenarios

① Ensure the safety of the variables inside the function funA, because the variables of funA cannot be directly accessed from the outside.

The above is the entire content of this article, I hope it will be helpful to everyone’s study.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to implement an online speech recognition system using WebSocket and JavaScript How to implement an online speech recognition system using WebSocket and JavaScript Dec 17, 2023 pm 02:54 PM

How to implement an online speech recognition system using WebSocket and JavaScript

WebSocket and JavaScript: key technologies for implementing real-time monitoring systems WebSocket and JavaScript: key technologies for implementing real-time monitoring systems Dec 17, 2023 pm 05:30 PM

WebSocket and JavaScript: key technologies for implementing real-time monitoring systems

How to implement an online reservation system using WebSocket and JavaScript How to implement an online reservation system using WebSocket and JavaScript Dec 17, 2023 am 09:39 AM

How to implement an online reservation system using WebSocket and JavaScript

How to use JavaScript and WebSocket to implement a real-time online ordering system How to use JavaScript and WebSocket to implement a real-time online ordering system Dec 17, 2023 pm 12:09 PM

How to use JavaScript and WebSocket to implement a real-time online ordering system

JavaScript and WebSocket: Building an efficient real-time weather forecasting system JavaScript and WebSocket: Building an efficient real-time weather forecasting system Dec 17, 2023 pm 05:13 PM

JavaScript and WebSocket: Building an efficient real-time weather forecasting system

Simple JavaScript Tutorial: How to Get HTTP Status Code Simple JavaScript Tutorial: How to Get HTTP Status Code Jan 05, 2024 pm 06:08 PM

Simple JavaScript Tutorial: How to Get HTTP Status Code

How to use insertBefore in javascript How to use insertBefore in javascript Nov 24, 2023 am 11:56 AM

How to use insertBefore in javascript

How to get HTTP status code in JavaScript the easy way How to get HTTP status code in JavaScript the easy way Jan 05, 2024 pm 01:37 PM

How to get HTTP status code in JavaScript the easy way

See all articles