>웹 프론트엔드 >JS 튜토리얼 >javascript의 파싱 및 실행 순서는 브라우저마다 다릅니다_javascript 기술

javascript의 파싱 및 실행 순서는 브라우저마다 다릅니다_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:55:241344검색

소개

자바스크립트는 해석형 언어이며 하향식으로 실행됩니다. 그러나 브라우저마다 "하향식"에 대한 이해가 조금씩 다르며, 코드의 업스트림과 다운스트림, 즉 프로그램 흐름이 프로그램의 올바른 작동에 매우 중요합니다. 그래서 우리는 js의 실행 순서를 깊이 이해해야 합니다. 이를 위해 가장 정확한 결과를 얻기 위해 다음과 같은 8가지 실험을 설계했습니다.

실험

코드 복사 코드는 다음과 같습니다.

< script type= "text/javascript">
//실험 1:
function t(a)
{
alert("[t(a)]a:" a); >}
함수 t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b)
}
t (1) ;
//결과:
//[t(a, b)]a:1, b:정의되지 않음

//실험 2:
함수 t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b)
}
함수 t(a)
{
alert( "[t(a)]a:" a);
}
t(1)
//결과:
//[t(a)]a:1

//실험 3:
function t(a)
{
alert("[t(a)]a:" a)
}
function t( a, b )
{
alert("[t(a, b)]a:" a ", b:" b)
}
t(1, 2); >// 결과:
//[t(a, b)]a:1, b:2

//실험 4:
함수 t(a, b)
{
Alert("[t(a, b)]a:" a ", b:" b)
}
function t(a)
{
alert("[t (a) ]a:" a);
}
t(1, 2);
//결과:
//[t(a)]a:1

// 실험 5
함수 t(a)
{
alert("[t(a)]a:" a)
}
t(1); function t( a, b)
{
alert("[t(a, b)]a:" a ", b:" b)
}
//결과:
// [t(a, b)]a:1, b:정의되지 않음

//실험 6
함수 t(a)
{
alert("[t(a )]a :" a);
}
t(1, 2);
함수 t(a, b)
{
alert("[t(a, b)] a:" a ", b:" b);
}
//결과:
//[t(a, b)]a:1, b:2

/ /실험 7
함수 t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b)
}
t(1 );
함수 t(a)
{
alert("[t(a)]a:" a)
}
//결과:
/ /[t (a)]a:1

//실험 8
함수 t(a, b)
{
alert("[t(a, b)]a: " a " , b:" b);
}
t(1, 2);
function t(a)
{
alert("[t(a)]a: " a) ;
}
//결과:
//[t(a)]a:1




추첨
자바스크립트 함수를 정의할 때 함수 이름은 함수 개체의 식별자이고 매개변수 개수는 함수의 속성일 뿐입니다. 매개변수 개수가 다른 함수를 정의하여 오버로딩을 구현하는 것은 불가능합니다.
함수 호출 시 js는 함수명을 통해 해당 함수 객체를 찾은 후, 함수 정의 시 매개변수에 따라 표현식 매개변수 목록을 순서대로 매칭하고, 초과된 매개변수는 폐기하고, 부족한 매개변수는 처리합니다. 정의되지 않은 다음 함수가 실행됩니다.

그래서 함수를 정의할 때 필수 매개변수는 일반적으로 매개변수 목록의 시작 부분에 배치되고, 선택적 매개변수는 필수 매개변수 뒤에 배치됩니다.

참고

1. 위 8가지 실험의 결과는 360 브라우저(버전/커널: 6.3.1.142/21.0.1180.89) 및 Firefox 브라우저(버전: 27.0.1 )를 통해 얻은 것입니다. 실행하여 얻습니다.
2. 위의 8개 실험은 서로 독립적입니다. 올바른 결과를 얻으려면 별도로 실행하세요.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.