>웹 프론트엔드 >JS 튜토리얼 >JavaScript 함수에서 주의해야 할 정의, 호출 및 문제

JavaScript 함수에서 주의해야 할 정의, 호출 및 문제

零下一度
零下一度원래의
2017-04-17 14:46:331385검색

본 글에서는 주로 자바스크립트 함수 호출 및 주의사항을 소개합니다. 필요하신 분들은

함수 정의

함수문 정의


function(a,b){
 return a+b; 
}

표현식 정의


var add = function(a,b){return a+b};

//함수 표현식에는 이름이 포함될 수 있으며 이는 반복 시 유용합니다. var f = functionfact(x ){ if(x<=1) {return 1; }else { return x*faxt(x-1) } }

표현식으로 정의된 함수, 함수 이름은 선택 사항입니다. 함수 정의 표현식에 이름이 포함된 경우 함수의 로컬 범위에는 함수 개체에 바인딩된 이름이 포함됩니다. 실제로 함수 이름은 함수

내에서 로컬 변수가 됩니다. 함수 명명 사양

1.like_this()첫 번째 문자는 소문자입니다. 여러 단어가 포함된 경우 단어는 밑줄로 구분됩니다.

2.likeThis()첫 번째 문자는 다음과 같습니다. 소문자, 여러 단어가 포함된 경우 첫 번째 단어를 제외한 단어의 첫 글자는 대학 문자를 사용합니다

3. 내부 함수 또는 개인 함수는 일반적으로 밑줄이 앞에 붙습니다

참고: 함수 선언문은 외부 스크립트나 외부 함수의 맨 위로 올라가기 때문에 정의되기 전에 나오는 코드로 호출할 수 있습니다.

함수를 표현식으로 정의하기 전에 변수에 할당해야 합니다. 따라서 표현식 모드에서 정의된 함수는 정의 이전에 호출할 수 없습니다.

함수 반환 값

  • return 문은 함수의 값을 반환합니다. 발신자.

  • return 문이 없으면 정의되지 않은 값을 반환합니다.

중첩 함수

  • 중첩 함수는 해당 함수의 매개변수 및 변수에 액세스할 수 있습니다

  • 그러나 중첩 함수는 루프, 조건문 또는 try/cache/finally/with 문에 나타날 수 없습니다.

함수 호출

  • 함수로

  • 메서드

  • 생성자

  • call() 및 apply() 메서드를 통해 간접적으로 호출

함수 call

add(1,2)

함수 호출에 대한 ECMAScript3 및 비엄격 ECMAScript5 규정에 따르면 호출 컨텍스트(this 값)는 전역 객체입니다. 그러나 엄격 모드에서는 호출 컨텍스트가 정의되지 않습니다.

//함수를 정의하고 함수를 호출하여 현재 스크립트가 엄격 모드에서 실행 중인지 확인


 var strict = (function(){return this;}());

메서드 호출


var o = {
 m:1,
 n:2,
 add:function(){
  this.result = this.m+this.n;
  }
}

메서드 호출과 함수 호출의 주요 차이점입니다. ----호출 컨텍스트

o.add() add의 호출 컨텍스트는 o입니다. 즉,

o.add()는 o['add']() 메소드 체인 : 메소드가 값을 반환할 필요가 없을 때는 직접 반환하는 것이 가장 좋습니다
이것은 키워드이지 변수나 속성 이름이 아닙니다. JavaScript 구문은 this
에 값을 할당하는 것을 허용하지 않습니다. 변수와 달리 this 키워드는 제한이 없습니다. 중첩 함수는 이를 호출하는 함수에서 this를 상속하지 않습니다. 외부 함수인 var self= this ;변수에 저장
중첩 함수가 함수로 호출되면 해당 this 값은 이를 호출한 개체를 가리킵니다. 함수로 호출되는 경우 전역 객체(비엄격 모드) 또는 정의되지 않음(엄격 모드)

생성자 호출

var o = new Object();

생성자 호출, 일반 함수 호출, 메소드 호출은 실제 매개변수로 처리됩니다. 호출 컨텍스트, 반환 값 등 측면에서 차이가 있습니다.

공식 매개변수가 없는 생성자 호출에서는 괄호를 생략할 수 있습니다.

var o = new Object();
var o = new Object;
//等价

생성자 호출은 새로운 빈 객체를 생성합니다. 이 객체는 생성자의 프로토타입 속성을 상속합니다. 이 함수는 새로 생성된 객체를 초기화하고 객체를 삭제하려고 시도합니다. 컨텍스트로서 생성자는 this 키워드를 사용하여 새로 생성된 객체를 참조할 수 있습니다.

new o.m() 호출의 컨텍스트가 o가 아닙니다.

생성자는 return을 사용하지 않습니다. 생성자가 return 문을 사용하여 명시적으로 개체를 반환하는 경우 호출 식의 값은 이 개체입니다. 생성자가 값을 반환하지 않거나 기본 값을 반환하는 경우 반환 값은 무시되고 새 개체가 반환 결과로 사용됩니다.



간접통화

call()

appy()


위 내용은 JavaScript 함수에서 주의해야 할 정의, 호출 및 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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