>  기사  >  웹 프론트엔드  >  js의 기능은 무엇입니까? js에서 함수를 사용하는 방법

js의 기능은 무엇입니까? js에서 함수를 사용하는 방법

不言
不言원래의
2018-08-16 09:58:3717388검색

이 글의 내용은 js의 기능이 무엇인지에 관한 것입니다. js의 기능 사용에는 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Function 및 함수

Function은 JavaScript에서 제공하는 참조 유형이며 Function 객체는 Function 유형을 통해 생성됩니다.
JavaScript에서는 함수도 객체 형태로 존재하며, 각 함수는 Function 객체입니다.

//字面量方式创建函数
var fun =function () {
    console.log(100)
};
//函数声明方式创建函数
function fn () {
    console.log(200)
};
/*     创建Funtion类型的对象
*       var 函数名 = new Function('参数',''函数体)*/
var f = new Function('a','console.log(a)');
f(2);//以函数方式调用

함수 유형

Function의 apply() 메서드

Function의 apply() 메서드는 함수를 호출하는 데 사용되며 지정된 this 값과 배열을 매개 변수로 받아들입니다.

//定义函数
function fun(value) {
    console.log(value)
}
/*
函数的apply()方法——>用于调用一个函数
     函数名.apply(thisArg,[argsArray])
       thisArg——>可选项,函数运行时使用的this值
       argsArray——>可选项,一个数组或者类数组对象,其中的元素作为单独的参数传给Function函数。*/
fun.apply(null,['100']);

Function의 call() 메소드

Function의 call() 메소드는 함수를 호출하는 데 사용되며 지정된 this 값과 매개변수 목록을 허용합니다.

var fun  = function (value,a,b,) {
    console.log(value,a,b,)
}
/*
*   call()方法调用函数
*   函数名.call(thisArg,arg1,arg2,…)
*
*   和apply()的区别在于提供参数的方式不同
*/
fun.call(null,2,3,4);//2 3 4

Function의 바인드 메소드

Function은 바인딩된 함수라고 하는 새 함수를 생성하는 데 사용되며 지정된 이 값을 매개변수로 받아들이고 매개변수 목록

var fun = function (a,b,c) {
    console.log( a,b,c)
}
/*  bind方法->相当于复制一份当前函数
*   函数名.bind(thisArg,arg1,arg2,...)
*     thisArg->当绑定函数被调用时,该属性作为原函数运行时的this指向
*     arg->参数。当绑定函数被调用时,这些参数将在实参之前传递给被绑定的方法
*     */

var v =fun.bind(null,2,3,4);
v();//2 3 4

오버로딩이 없습니다

in 기타 개발 언어에서는 함수에 오버로딩이라는 기능이 있습니다. 즉, 동일한 이름을 가진 여러 함수를 정의하지만 각 함수는 서로 다른 수의 매개변수를 받습니다. 프로그램은 호출 중에 전달된 실제 매개변수 수에 따라 호출되는 함수를 결정합니다.
하나의 JavaScript에서는 함수가 중복되지 않습니다. 동일한 이름의 함수가 여러 개 정의된 경우 마지막에 정의된 함수만 유효합니다.

인수 객체

오버로딩은 없지만 JavaScript는 함수 오버로딩 현상을 시뮬레이션하기 위해 인수 객체를 제공합니다.

/*
*    argumengs对象
*    *该对象存储当前函数中所有的参数(实参)->类数组对象
*    *该对象一般用于函数中
*    *作用-用于获取当前函数的所有参数
*    *arguments.length->函数所有参数(实参)的个数*/
function fun() {
    var num = arguments.length;
    switch (num){
        case 2://参数个数
            return arguments[0]+arguments[1];
        break;
        case 3:
            return arguments[0]+arguments[1]+arguments[2];
        break;
    }
}
console.log(fun(4,5));//9
console.log(fun(4,5,6));//15

Recursion

함수 본문 내에서 자신을 호출하는 함수를 재귀 함수라고 합니다. 어떤 의미에서 재귀는 루프와 유사합니다. 둘 다 동일한 코드를 반복적으로 실행하며 무한 루프와 무한 재귀를 피하기 위해 종료 조건이 필요합니다.
함수 본문에는 자체 함수를 호출하는 두 가지 방법이 있습니다

  • 자신의 함수 이름을 사용하여

  • 인수 객체의 호출 수신자 속성을 사용하여

/*//无线递归
function fun() {
    console.log('23')
    fun()//调用自身函数,实现递归
}
fun()*/

function fn(v) {
    console.log(v);
    if (v>=5){
        return
    }
    /*fn(v+1)*///使用该方法终止递归当执行下列代码输出时,报错
    arguments.callee(v+1)
}
/*fn(0)*/
var f = fn;
fn=null;
f(0);

특수 함수

익명 function

JavaScript에서는 함수를 데이터로 사용할 때 이름을 설정할 필요가 없습니다. 익명 함수의 두 가지 용도

  • 익명 함수를 다른 함수에 매개변수로 전달할 수 있습니다.

  • 익명 함수를 정의하여 특정 일회성 작업을 수행할 수 있습니다.

콜백 함수

함수가 다른 함수의 매개변수로 사용될 때, 그 매개변수로 사용되는 함수를 콜백 함수라고 합니다.

//作为另一个函数参数的函数fun->回调函数
var fun = function () {
    return 2;
};

function fn(v) {
    return v();
}
/*
var result=fn(fun);//函数fun作为函数fn的实参
console.log(result);
*/

//以上代码等同于以下代码
//以下代码中作为参数的函数->匿名回调函数

var f = fn(function(){return 2;});
console.log(f);

자체튜닝 함수

자체튜닝 함수는 함수

/*    自调函数->定义即调用的函数
*      相当于在匿名函数外加了小括号
*      第一对括号->定义函数
*      第二对括号->调用函数*/

(function () {
    console.log('23')
})()//23->后边的括号表示调用

를 값으로 정의한 후 자신을 호출하는 함수

함수는 다른 함수의 결과로 반환되고, 그 결과로 반환되는 함수는 함수를 값으로 호출했습니다.

var one = function(){
    return 100;
}
// 作为值的函数 -> 内部函数的一种特殊用法
function fun(){
    var v = 100;
    // 内部函数
    return function(){
        return v;
    };
}

var result = fun();
// console.log(result);// one函数
// console.log(result());// 100

console.log(fun()());

Closure

스코프 체인

스코프 체인은 로컬 스코프가 상위 스코프에 액세스할 수 있음을 의미합니다.

var a = 10;// 全局变量
function fun(){
    var b = 100;// fun函数作用域的局部变量
    // 内部函数
    function fn(){
        var c = 200;// fn函数作用域的局部变量
        // 内部函数
        function f(){
            var d = 300;// f函数作用域的布局变量
            // 调用变量
            console.log(a);// 10
            console.log(b);// 100
            console.log(c);// 200
            console.log(d);// 300
        }
        f();
        // 调用变量
        // console.log(a);// 10
        // console.log(b);// 100
        // console.log(c);// 200
        // console.log(d);// d is not defined
    }
    fn();
    // 调用变量
    // console.log(a);// 10
    // console.log(b);// 100
    // console.log(c);// c is not defined
    // console.log(d);// d is not defined
}
fun();

Closure

내부에 함수가 있을 때 When 외부 범위에서 어떤 방식으로든 액세스하면 클로저입니다.

var n;// 定义变量,但不初始化值
function fun(){// 函数作用域
    var v = 100;
    // 进行初始化值 -> 一个函数
    n = function(){
        console.log(v);
    }
    // n();
}
fun();

n();// 100

클로저의 역할

  • 공유 지역 변수 제공

  • 공유 지역 변수를 보호하고 변수 읽기 및 쓰기를 위한 특수 기능 제공

  • 글로벌 오염 방지

관련 권장 사항:

자바스크립트 함수 유형 소개

JS 함수 이해에 대한 간략한 분석

ECMAScript_javascript 기술의 함수 유형

위 내용은 js의 기능은 무엇입니까? js에서 함수를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.