>  기사  >  웹 프론트엔드  >  자바스크립트 함수의 기본 기능 선언, 승격, 복제, 삭제 예시에 대한 자세한 설명

자바스크립트 함수의 기본 기능 선언, 승격, 복제, 삭제 예시에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-25 09:50:451662검색

함수 선언문

  함수 키워드를 사용하고 그 뒤에 매개변수 집합과 함수 본문이 옵니다.

function funcname([arg1 [,arg2 [...,argn]]]){
    statement;
}

  funcname은 선언할 함수 이름의 식별자입니다. 매개변수 목록은 함수 이름 뒤에 괄호로 묶이고 쉼표로 구분됩니다. 함수를 호출할 때 이 식별자는 함수에 전달된 실제 매개변수를 참조합니다

[참고] 함수 명령문에는 중괄호가 필요합니다. 이는 함수가 body에는 하나의 명령문만 포함되어 있으며 중괄호로 묶어야 합니다.

function test()//SyntaxError: Unexpected end of input
function test(){};//不报错
while(true);//不报错

Hoisting

범위 블로그 시리즈의 세 번째 기사에서 함수 선언 호이스팅(hoisting)에 대해 언급했는데, 함수 이름과 함수 본문이 모두 호이스팅됩니다.

foo();
function foo(){
    console.log(1);//1
}

 위 코드 조각이 콘솔에 1을 출력할 수 있는 이유는 아래와 같이 foo() 함수 선언이 승격되었기 때문입니다.

function foo(){
    console.log(1);
}
foo();

Duplicate

 변수의 중복 선언은 쓸모가 없지만 함수의 중복 선언은 쓸모가 없습니다. 이전 선언을 덮어씁니다(변수 선언이든 함수 선언이든)

//变量的重复声明无用var a = 1;
var a;
console.log(a);//1
//由于函数声明提升优先于变量声明提升,所以变量的声明无作用
var a;
function a(){
    console.log(1);
}
a();//1
//后面的函数声明会覆盖前面的函数声明
a();//2
function a(){
    console.log(1);
}
function a(){
    console.log(2);
}

따라서 동일한 범위에서 반복되는 선언은 피해야 합니다

Deletion

변수 선언과 마찬가지로 함수 선언문으로 생성된 변수는 삭제할 수 없습니다

function foo(){
    console.log(1);
}
delete foo;//false
console.log(foo());//1

위 내용은 자바스크립트 함수의 기본 기능 선언, 승격, 복제, 삭제 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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