함수 선언. C 언어 객체로서 함수를 선언해야 합니다. javascript에서 함수 선언과 함수 표현식의 차이점 First class javascript 표현식




C 언어 객체로서 함수를 선언해야 합니다. 사용자 함수 선언, 즉 선언은 설명 형식과 정의 형식의 두 가지 형식으로 수행됩니다.

함수에 대한 설명은 먼저 해당 프로토타입의 프로그램 파일을 제시하는 것으로 구성됩니다. 함수 프로토타입은 전체 정의(전체 텍스트)가 나중에 프로그램 텍스트(현재 또는 다른 소스 파일 또는 라이브러리에 있음)에서 제공될 것임을 컴파일러에 알립니다.

언어 표준에서는 다음과 같은 함수 선언 방법을 사용합니다.

결과_유형 ID _functions(변수 유형1, ..., 변수 유형 N);

언어 컴파일러가 변수 식별자를 처리하지 않기 때문에 프로토타입 괄호 안에 변수 식별자를 지정할 필요가 없습니다.

프로토타입 설명을 통해 컴파일러는 함수가 실제로 호출될 때 매개변수의 유형과 개수가 일치하는지 확인할 수 있습니다.

매개변수 목록이 포함된 재미있는 함수 설명의 예:

float fun(int, float, int, int);

함수의 전체 정의는 다음과 같습니다.

결과_유형 ID _functions(매개변수 목록)

기능 코드

결과 유형은 연산자를 사용하여 호출 지점에 값이 반환되는 표현식 유형을 결정합니다. 반품<выражение> .

함수 유형을 지정하지 않으면 기본 유형이 가정됩니다. 정수 .

매개변수 목록은 쉼표로 구분된 매개변수 유형 및 매개변수 식별자 목록으로 구성됩니다.

함수에는 매개변수가 없을 수 있지만 어떤 경우에도 괄호가 필요합니다.

함수가 어떤 값도 반환하지 않는 경우 해당 함수는 다음 유형의 함수로 선언되어야 합니다. 무효의 (공백).

이 경우 운영자는 반품 넣을 필요는 없습니다.

함수는 여러 개의 명령문을 가질 수 있습니다 반품 , 그러나 아무것도 없을 수도 있습니다. 이러한 경우 호출 프로그램으로의 복귀는 함수의 마지막 명령문이 실행된 후에 발생합니다.

두 정수 변수의 가장 작은 값을 결정하는 함수의 예:

int min (int x, int y)

반환(x

값을 반환하는 모든 함수는 C 표현식의 오른쪽에서 사용해야 합니다. 그렇지 않으면 반환된 결과가 손실됩니다.

함수에 매개변수 목록이 없으면 해당 함수를 선언할 때 괄호 안에 void 키워드도 표시하는 것이 좋습니다. 예를 들어, 무효 메인(void).

그만큼 기능키워드는 표현식 내에서 함수를 정의하는 데 사용될 수 있습니다.

이 대화형 예제의 소스는 GitHub 저장소에 저장되어 있습니다. 대화형 예제 프로젝트에 기여하고 싶다면 https://github.com/mdn/interactive-examples를 복제하고 풀 요청을 보내주세요.

통사론

var myFunction = 함수 [ 이름]([매개변수1[, 매개변수2[, ..., 매개변수N]]]) { 진술 };

매개변수

이름 함수 이름입니다. 생략할 수 있으며, 이 경우 기능은 다음과 같습니다. 익명의. 이름은 함수 본문에만 로컬입니다. paramN 함수에 전달될 인수의 이름입니다. 명령문 함수의 본문을 구성하는 명령문입니다.

설명

함수 표현식은 함수 명령문과 매우 유사하며 구문도 거의 동일합니다(자세한 내용은 함수 명령문 참조). 함수 표현식과 함수 명령문의 주요 차이점은 다음과 같습니다. 함수 이름함수 표현식에서 생략할 수 있는 항목 익명의기능. 함수 표현식은 정의되자마자 실행되는 IIFE(즉시 호출 함수 표현식)로 사용될 수 있습니다. 자세한 내용은 함수에 관한 장을 참조하세요.

함수 표현식 호이스팅

JavaScript의 함수 표현식은 함수 선언과 달리 호이스팅되지 않습니다. 함수 표현식을 정의하기 전에는 사용할 수 없습니다.

Console.log(notHoisted) // 정의되지 않음 //변수 이름이 호이스팅되어도 정의가 아니므로 정의되지 않습니다. notHoisted(); // TypeError: notHoisted는 함수가 아닙니다. var notHoisted = function() ( console.log("bar"); );

명명된 함수 표현식

함수 본문 내에서 현재 함수를 참조하려면 명명된 함수 표현식을 만들어야 합니다. 이 이름은 함수 본문(범위)에만 로컬입니다. . 이는 또한 비표준 인수.callee 속성을 사용하는 것을 방지합니다.

Var math = ( "factit": 함수 계승(n) ( console.log(n) if (n<= 1) { return 1; } return n * factorial(n - 1); } }; math.factit(3) //3;2;1;

함수 표현식이 할당된 변수에는 이름 속성이 있습니다. 다른 변수에 할당되어도 이름은 변경되지 않습니다. 함수 이름을 생략하면 변수 이름(암시적 이름)이 됩니다. 함수 이름이 있으면 함수 이름(명시적 이름)이 됩니다. 이는 화살표 함수에도 적용됩니다(화살표에는 이름이 없으므로 변수에 암시적 이름만 지정할 수 있습니다).

Var foo = function() () foo.name // "foo" var foo2 = foo foo2.name // "foo" var bar = function baz() () bar.name // "baz" console.log(foo === foo2); // 참 console.log(typeof baz); // 정의되지 않음 console.log(bar === baz); // false(baz == 정의되지 않았기 때문에 오류가 발생함)

다음 예에서는 명명되지 않은 함수를 정의하고 이를 x 에 할당합니다. 이 함수는 인수의 제곱을 반환합니다.

Var x = function(y) ( return y * y; ); Button.addEventListener("click", function(event) ( console.log("버튼이 클릭되었습니다!") ))

명세서

사양 상태 논평
ECMAScript 최신 초안(ECMA-262)
초안
ECMAScript 2015(6판, ECMA-262)
해당 사양의 "기능 정의"에 대한 정의입니다.
기준
ECMA스크립트 5.1(ECMA-262)
기준
ECMA스크립트 3판(ECMA-262)
해당 사양의 "기능 정의"에 대한 정의입니다.
기준 초기 정의. JavaScript 1.5에서 구현되었습니다.

브라우저 호환성

이 페이지의 호환성 표는 구조화된 데이터에서 생성됩니다. 데이터에 기여하고 싶다면 https://github.com/mdn/browser-compat-data를 확인하고 풀 요청을 보내주세요.

GitHub에서 호환성 데이터 업데이트

데스크탑이동하는섬기는 사람
크롬가장자리파이어폭스인터넷 익스플로러오페라원정 여행안드로이드 웹뷰안드로이드용 크롬안드로이드용 파이어폭스안드로이드용 오페라iOS의 사파리삼성인터넷Node.js
기능Chrome 전체 지원 예엣지 전체 지원 12Firefox 전체 지원 1IE 전체 지원 예오페라 전체 지원 예Safari 완전 지원 예WebView Android 전체 지원 예Chrome Android 전체 지원 예Firefox Android 전체 지원 4Opera Android 전체 지원 예Safari iOS 전체 지원 예삼성 인터넷 안드로이드 전체 지원 예nodejs 전체 지원 예
매개변수의 후행 쉼표크롬 전체 지원 58Edge 지원 안됨 아니요Firefox 전체 지원 52IE 지원 안함 아니요오페라 전체 지원 45Safari 지원 안됨 아니요WebView Android 전체 지원 58Chrome Android 전체 지원 58Firefox Android 전체 지원 52Opera Android 전체 지원 43Safari iOS 지원되지 않음 아니요삼성 인터넷 안드로이드 7.0 완벽 지원nodejs 8.0.0 전체 지원

전설

전폭적인 지원전폭적인 지원 지원 없음지원 없음

정의 표현식을 통해 함수를 생성하는 또 다른 방법을 고려할 기사입니다. 그리고 이 함수 선언 방식과 기존 방식의 차이점을 살펴보겠습니다.

정의 표현식을 사용하여 함수 생성

JavaScript에서는 전통적인 방법(전통적인 선언)뿐만 아니라 정의 표현식을 사용하여 함수를 생성할 수 있습니다. 일부 소스에서 함수를 정의하는 이 방법을 함수 리터럴이라고 합니다.

정의 표현식의 기본 아이디어는 함수 정의가 일부 변수나 표현식의 값으로 사용된다는 것입니다.

예를 들어, sum 변수에는 매개변수로 지정된 2개 숫자의 합계를 콘솔에 출력하는 함수에 대한 설명이 포함됩니다.

Var sum = function(num1,num2) ( return console.log(num1+num2); );

정의 표현식을 기반으로 생성된 함수는 변수 이름으로 호출됩니다.

//예를 들어 sum 변수에 포함된 함수를 호출하고 2개의 인수를 전달합니다. 합계(7,4);

참고: 함수 이름은 정의 표현식에 지정되지 않습니다. 이름 없이 설명되는 함수를 익명이라고 합니다.

JavaScript를 사용하면 정의 표현식으로 생성된 함수 구문에 이름을 사용할 수 있습니다. 그러나 이것은 자신의 몸 안에서 해결해야 할 때만 의미가 있습니다. 예를 들어 재귀 함수를 작성할 때입니다. 이 기능은 다른 응용 프로그램을 제공하지 않습니다. 이렇게 정의된 함수를 해당 경계 외부에서 이름으로 참조하는 것은 불가능하기 때문입니다.

예를 들어, 숫자 매개변수로 지정된 계승을 계산하는 함수를 만들어 보겠습니다.

Var 계승 = 함수 사실(숫자) ( if (숫자

이 코드는 함수를 정의하고 해당 함수에 대한 참조를 계승 변수에 저장합니다. 이 함수 내에서 함수를 호출하려면 사실이라는 이름을 사용합니다. 함수 본체 외부에서는 사실이라는 이름으로 함수에 액세스할 수 없습니다. 이를 위해서는 계승 변수를 사용해야 합니다.

하지만 이 경우에도 이름 없이도 할 수 있습니다. JavaScript를 사용하면 인수 개체의 callee 속성을 사용하여 본문 내에서 함수를 호출할 수 있습니다.

Var 계승 = function(num) ( if (num)

JavaScript - 자체 호출 기능

정의 표현식으로 정의된 함수는 즉시 호출될 수 있습니다. 이렇게 하려면 함수 본문 뒤에 괄호를 넣고 필요한 경우 인수를 지정해야 합니다.

예를 들어 매개변수 값 7과 4를 사용하여 바로 sum 함수를 호출해 보겠습니다.

Var sum = function(num1,num2) ( return console.log(num1+num2); )(7,4);

함수를 즉시 호출하는 프로세스를 초기화 또는 함수 인스턴스화라고도 합니다.

함수 정의 표현식은 한 번만 즉시 실행해야 하는 경우 매우 자주 사용됩니다. 이렇게 하려면 변수를 사용하지 않고도 즉시 계산된 표현식을 작성할 수 있습니다. 익명 함수 정의를 괄호로 묶습니다.

(function(num1,num2) ( return console.log(num1+num2); )(7,4));

함수 선언과 함수 표현식의 차이점

함수 선언과 함수 표현식 함수 간의 주요 차이점은 다음 표에 나와 있습니다.

함수 선언 함수 표현
브라우저(JavaScript 인터프리터)는 함수가 기본 코드 흐름(표현식의 일부가 아님)에 있는 경우 함수 선언으로 간주합니다. 브라우저는 함수가 표현식 내에 배치된 경우 함수 표현식으로 찾습니다.
이런 방식으로 함수를 선언하면 해당 함수에 액세스하는 변수가 자동으로 생성됩니다. function square(a) ( return a*a; ) // 함수 호출 console.log(square(5)); 함수에 액세스하려면 변수를 만들고 이 함수에 대한 링크를 변수에 저장해야 합니다. var square = function(a) ( return a*a; ) // 함수 호출 console.log(square(5));
코드 실행 전에 초기화됩니다(해당 범위에서). 이 동작을 올리기 또는 끌어올리기라고도 합니다. 이러한 함수는 선언 전에 호출될 수 있습니다. // 선언되기 전에 함수를 호출합니다. console.log(square(7)); 함수 square(a) ( return a*a; ) 함수 표현식은 선언되기 전에는 사용할 수 없습니다. 변수 자체만 발생합니다. // 함수 호출 시 오류 console.log(square(7)); var square = function(a) ( return a*a; )

이 경우 다음과 같은 일이 발생합니다.

바르 광장; console.log(square(7)); // 하지만 이 단계에서 square 변수의 값은 정의되지 않음 square = function(a) ( return a*a; )

strict를 사용하면 함수 선언으로 선언된 함수는 선언된 블록 내에서만 표시됩니다. "엄격하게 사용하세요"; if (true) ( ​​​​function sum(a,b,c) ( return a+b+c; ) console.log(sum(10,20,10)); ) // 함수 액세스 중 오류가 발생했습니다. sum console.log( 합계 (4,5,4)); 함수 선언과 달리 함수는 생성된 블록 외부에서 액세스할 수 있습니다. "use strict"; if (true) ( ​​​var sum = function (a,b,c) ( return a+b+c; ) console.log(sum(10,20,10)); ) // sum 함수에 액세스할 수 있습니다. console.log(합계(4,5,4));
함수 선언으로 선언된 함수는 즉시 호출할 수 없습니다.
이렇게 하려면 함수를 표현식의 일부로 만들어야 합니다. 예를 들어 함수를 괄호로 묶어야 합니다. 그러면 해당 함수는 함수 표현식의 일부로 간주되어 즉시 호출될 수 있습니다.
예: var sum = (function sum(a,b,c) ( return a+b+c; ))(5,6,7); console.log(합계 유형); // 숫자 console.log(sum); // 숫자
함수 표현식으로 선언된 함수는 즉시 호출될 수 있습니다. var sum = 함수 (a,b,c) ( return a+b+c; )(5,6,7); console.log(합계 유형); // 숫자 console.log(sum); // 숫자 이 경우 합계 변수(이 경우)에는 더 이상 함수에 대한 링크가 포함되지 않고 해당 결과(이 예에서는 숫자)가 포함됩니다.

결론: 정의 표현식을 사용하여 함수를 선언하는 방식을 사용하면 함수를 변수로 사용할 수 있습니다. JavaScript 언어의 이 기능은 매우 흥미롭고 이를 통해 보다 유연한 스크립트를 만들 수 있습니다.

이전 섹션에서 우리는 프로그램을 구성하는 기본 "구성 요소"(연산자와 표현식)를 살펴보았습니다. Basic의 첫 번째 버전과 같은 초기 프로그래밍 언어에서는 이것이 끝났습니다. 프로그램은 일련의 명령문입니다. 그게 전부입니다. 프로그램이 작은 한 이 접근 방식은 상당히 실행 가능합니다. 프로그램에 10개의 명령문이 있으면 추가 구조가 필요하지 않습니다. 그러나 프로그램에 10,000명의 연산자 또는 10,000,000명의 연산자가 있는 경우(그러한 프로그램이 존재하고 작동하는 경우) 추가 구조를 도입하지 않고는 불가능합니다.

VBA는 다음과 같은 프로그램 구조를 지원합니다. 계층 구조의 가장 높은 수준에는 응용 프로그램이 있고, 그 다음에는 해당 응용 프로그램의 실제 문서와 관련된 프로젝트가 있으며, 세 번째 수준에는 모듈(응용 프로그램 모듈, 사용자 모듈, 클래스 모듈, 양식 모듈 및 링크 모듈)이 있습니다. 그리고 마지막 수준에는 이러한 모듈의 절차와 기능이 있습니다.

이러한 프로그램 구조화는 구조화된 모듈식 프로그래밍의 원칙을 완전히 충족합니다. 이 섹션에서는 모듈 수준의 작업에 대해 자세히 설명하고 애플리케이션 및 프로젝트 작업에 대해 설명합니다. 섹션 20.6, "응용 프로그램 편집기용 Visual Basic"을 참조하십시오.

그래서, 모듈 -이는 프로그램의 일부로, 독립적인 방송이 가능한 형태로 설계되었습니다. 모듈은 다음 두 섹션으로 구성됩니다. 광고 섹션(선언)그리고 절차 및 기능 섹션.장에서 선언전역 변수, 사용자 정의 유형 및 열거 유형에 대해 설명합니다. 다음 섹션에서는 절차와 기능에 대해 설명합니다. 절차실행될 수 있는 최소한의 의미상 완전한 소프트웨어 구성입니다. 결국 연산자는 단순히 실행되거나 작성되는 것이 아니라 프로시저 및 함수 설명에서 발견됩니다.

가시 영역 -변수 이름이 표시되어 해당 값에 접근할 수 있는 프로그램 영역입니다.

가시성에는 세 가지 수준과 다섯 가지 광고 방법이 있습니다.

프로시저(범위는 변수가 선언된 프로시저뿐입니다.)

  • Dim 문은 프로시저 본문 내와 프로시저의 어느 위치에서든 변수를 사용하는 문 앞에 변수를 선언합니다. 주어진 변수의 수명은 프로시저의 범위입니다. 즉, 주어진 프로시저에 들어갈 때 변수에 메모리가 할당되고 초기화되며, 프로시저가 실행되는 동안 변수의 값이 변경될 수 있습니다. 프로시저를 종료하면 할당된 메모리가 해제되고 이에 따라 변수 값이 손실됩니다.
  • 정적 연산자는 Dim 연산자와 반대이며 정적 변수를 선언합니다. 차이점은 프로시저를 종료할 때 정적 변수의 메모리는 사라지지 않지만 (범위로 인해) 일시적으로 사용할 수 없게 되고 그에 따라 해당 값이 저장되어 프로시저를 다시 호출할 때 사용할 수 있다는 것입니다.

모듈(범위 - 변수가 선언된 모듈의 모든 프로시저):

  • Private 문은 선언 섹션에서 변수를 선언합니다. 선언(모듈 절차 외부).
  • Dim 연산자는 (이 경우) Private 연산자와 완전히 유사합니다.

애플리케이션(범위 - 활성 애플리케이션의 모든 모듈의 모든 절차):

  • Public 문은 선언 섹션에서 변수를 선언합니다. 선언.

모든 VBA 사용자 정의 요소와 마찬가지로 프로시저에도 선언이 필요합니다. 프로시저 선언의 구문은 다음과 같습니다.

하위 프로시저 이름([인수 목록])

[블록 운영자1]

[ blockOperators2 ] 하위 종료

Private 키워드는 프로시저에 대해 다음 범위(설명되는 모듈만)를 설정합니다. 즉, 동일한 모듈의 프로시저에서만 호출할 수 있습니다. 반대로 Public 키워드는 모든 프로젝트 모듈에 액세스할 수 있는 프로시저를 선언합니다. 기본적으로 프로시저는 공개적으로 사용 가능합니다. 즉, 공개 상태입니다. Friend 키워드의 사용에 대해서는 잠시 후에 VBA 클래스에 대해 이야기할 때 다루도록 하겠습니다.

선언문 다음에는 모든 지역 변수를 정적으로 정의하는 선택적 static 키워드가 있습니다. 이 연산자는 프로시저 본문에 설명된 각 변수를 정적으로 선언하는 것과 같습니다.

프로시저이름모든 명명 규칙을 만족하는 프로시저 식별자입니다.

이름 뒤에는 필수 괄호가 있지만 선택 사항인 Argument-List가 옵니다. 단일 인수 선언을 자세히 살펴보겠습니다. 더 많은 경우에는 단순히 쉼표로 구분됩니다.

인수-이름 [()] [=기본값]

Optional 키워드는 인수가 선택적이며 프로시저 호출 시 생략될 수 있음을 의미합니다. 기본적으로 인수는 필수입니다. 모든 선택적 인수는 필수 인수 뒤에 와야 합니다. 당연히 선택적 매개변수는 값기본값프로시저를 호출할 때 지정되지 않은 경우 선택적 인수의 값입니다. 구문에 ParamArray 키워드가 포함되어 있으면 Optional 키워드를 사용할 수 없습니다.

프로시저는 실제 매개변수로서 상수값뿐만 아니라 변수값도 전달받을 수 있다. 변수를 매개변수로 프로시저에 전달할 때 ByVal(값 기준) 및 ByRef(참조 기준)의 두 가지 방법 중 하나를 사용할 수 있습니다.

이 두 가지 방법의 차이점을 이해하려면 "내부에서" 매개변수를 전달하기 위한 저장 및 메커니즘을 고려해야 합니다. 따라서 모든 유형의 변수를 선언할 때 변수 값이 저장될 컴퓨터 메모리 영역이 할당됩니다. 물론 이 영역의 크기는 이 변수의 유형에 따라 달라집니다. 이제 변수가 컴퓨터 내부에서 어떻게 구성되어 있는지 알았으니 변수를 프로시저에 매개변수로 전달하는 것을 고려해 보겠습니다.

변수가 참조에 의해(즉, 이름 앞에 ByRef 키워드를 사용하여) 프로시저에 전달되면 프로시저에는 메모리에 있는 이 변수의 주소가 전달됩니다. 이 경우 프로시저의 형식 인수는 전달된 실제 매개변수로 식별됩니다.

따라서 형식 매개변수의 값을 변경하는 호출된 프로시저는 변수의 값을 변경합니다.

변수가 값으로 전달되는 경우(즉, 이름 앞에 Byval 키워드 사용) 컴파일러는 이 변수의 임시 복사본을 생성하며 이 복사본 변수의 주소가 프로시저에 전달됩니다. 따라서 형식 매개변수의 값을 변경하는 호출된 프로시저는 프로시저가 완료된 후 삭제되는 복사 변수의 값(변수 자체는 아님)을 변경합니다. 기본적으로 VBA에서는 변수가 참조로 전달됩니다.

이제 변수를 프로시저에 전달하는 방법을 살펴보았으므로 해당 디자인에 대해 더 자세히 살펴보겠습니다. 다음 paramArray 매개변수는 인수 목록의 마지막 인수 앞에만 나타날 수 있으며, 이는 이것이 변형 유형 요소의 선택적 배열임을 나타냅니다.

인수 이름 -프로시저 본문의 인수를 나타내는 명명 규칙에 따라 구성된 식별자입니다. 매개변수 데이터 형식내장 데이터 유형이거나 사용자 정의 유형입니다. 기본 데이터 형식변형입니다.

절차에 대한 설명이 나온 후 블록연산자1(보통 호출 절차 본문),프로시저의 인수 값을 사용할 수 있는 프로시저 명령문 실행 중에 Exit Sub 문(프로시저 종료)이 발생하면 프로시저 실행이 종료되고 제어가 다음 명령문으로 이전됩니다. 프로시저 호출문.

함수는 명령문을 실행하는 것 외에도 값을 반환한다는 점에서 프로시저와 다릅니다. 함수를 설명하는 구문은 프로시저와 약간 다릅니다.

함수 함수 이름 [(인수 목록)]

[블록 운영자1]

[함수명 = 표현식]

[블록운영자2]

[함수명 = 표현식] 함수 종료

먼저 하위 키워드가 Function으로 대체되었습니다. 둘째, 인수를 선언한 후에는 함수에서 반환하는 값의 유형을 나타내야 합니다. 셋째, 함수 본문에는 선언된 유형이 있는 모든 값의 함수 이름에 대한 할당이 있습니다. 물론 이러한 할당은 필요하지 않지만 그렇게 하면 함수가 프로시저처럼 보이고 함수의 결과는 해당 유형에 대해 정의된 기본값이 됩니다. 마지막으로 Exit Sub 키워드 대신 Exit Function 키워드를 사용하여 함수를 종료합니다.

출판사와 상점의 예를 사용하여 일련의 응용 프로그램을 초기화하는 절차를 설명하겠습니다. 따라서 프로시저에 전달되는 배열 인수가 있고 프로시저는 표준 inputBox 함수를 사용하여 이를 초기화합니다. 배열의 상한과 하한을 결정하기 위해 표준 함수 LBound 및 uBound가 사용됩니다.

함수의 경우 요청 배열과 재고 도서 수를 인수로 입력하고, 모든 매장의 요청을 만족하면 논리값 True를, 그렇지 않으면 False를 반환한다. 그런데 책 수 인수를 선택 사항으로 설정하고 기본값은 5000으로 설정하겠습니다.

프로그램 20.14. 프로시저 및 함수 선언

Public Sub InitBookShops(arr()를 정수로 사용)

Dim i, str For i = LBound(arr)에서 UBound(arr)로

str = "상점 #에 대한 주문을 입력하세요" & i arr(i) = InputBox(str) Next i End Sub

공용 함수 SaleAbility(arr() As Integer, _ "

선택적 numOfBooks As Integer = 5000) As Boolean

arr의 각 요소에 대해

sumOfBooks = sumOfBooks + elem 다음 경우 sumOfBooks< numOfBooks Then

SaleAbility = True Else

SaleAbility = False End If End 함수

논평

SaleAbility 함수 본문에 의도적인 비합리성이 있습니다. 마지막 조건부 if 문 대신. . .그 다음에. . .그렇지 않으면 동일하고 보다 효율적인 할당 연산자 SaleAbility = sumOfBooks를 작성할 수 있고 작성해야 합니다.< numOfBooks. Этим замечанием мы специально акцентируем внимание читателя на подобных мелких, но важных "хитростях" хорошего стиля программирования.

위에서 설명한 프로시저 및 함수 선언 외에도 VBA에는 특별한 유형의 프로시저가 있습니다. 시스템이나 사용자에 의해 발생한 이벤트에 대응하기 위한 절차입니다. (22장 "애플리케이션 개발" 참조)예를 들어 Word 문서의 경우 열기 및 닫기 이벤트가 정의되고 Excel 통합 문서의 경우 Beforesave 및 Beforedose, 사용자 클래스 개체의 경우 초기화 및 종료, 대화 상자 버튼을 클릭하는 것도 이벤트 등입니다. 사용자는 프로시저를 생성할 수 있습니다. 예를 들어, 그러한 이벤트에 직접 반응하려면 "안녕하세요, 수고해 주셔서 감사합니다!"라는 메시지를 표시하도록 요청하세요. 문서를 닫을 때.

이러한 프로시저의 구문은 일반 프로시저의 구문과 동일하며 해당 이름만 먼저 이벤트와 연결될 개체를 나타내고 밑줄 문자(_)와 이벤트의 실제 이름을 나타냅니다.

프로그램 20.15. 이벤트 응답 절차

비공개 하위 문서_Close()

MsgBox ("안녕하세요, 수고해주셔서 감사합니다!")

논평

이벤트 중심은 다음 아이디어를 기반으로 프로그램 코드를 구성하는 방법입니다. 미리 정의된 명명된 이벤트 집합이 있습니다. 이벤트는 객체와 명시적으로 연관될 수도 있고 암시적으로 연관되거나 암시적 객체와 연관될 수도 있습니다. 후자의 경우 이벤트를 일반적으로 시스템 이벤트라고 합니다. 이벤트가 발생할 수 있습니다. 이벤트가 발생한다는 것은 시스템 상태가 특정 방식으로 변경되었음을 의미합니다. 이벤트에는 이벤트 응답이라고 하는 연관된 프로시저가 있을 수 있습니다. 이벤트가 발생하면 반응 프로시저가 자동으로 호출됩니다. 이벤트 제어를 지원하는 최신 프로그래밍 시스템은 다양한 이벤트를 제공하며 이에 대한 반응은 프로그램에서 정의할 수 있습니다. 예를 들어 키보드의 키 누르기, 화면의 특정 영역에서 마우스 포인터 누르기, 내부 타이머로 지정된 값에 도달, 지정된 파일 열기 등. 완전한 이벤트 중심 프로그램에는 프로그램 외부(운영 체제 또는 관리 런타임)에 있는 주요 제어 흐름이 없습니다. 즉, 이벤트 생성 메커니즘이 구현되는 시스템입니다. 제어는 반응 절차를 호출하는 형태로만 프로그램에 들어갑니다. 이러한 프로그램 구성은 높은 모듈성, 투명성, 균형 잡힌 구조 및 기타 유용한 속성을 보장합니다. 일반적으로 수행되는 것처럼 이벤트를 응용 프로그램 명령과 연결하면 이벤트 관리가 사용자 인터페이스 구현에 가장 적합하다는 것이 분명합니다.


최신 프로그래밍 시스템에는 컨트롤(컨트롤)이라고 하며 내장된 이벤트 제어 메커니즘과 긴밀하게 통합되어 있는 풍부하고 끊임없이 진화하는 기성 구성 요소 라이브러리가 있습니다. 사전 구축된 컨트롤을 사용하는 것은 편리하고 생산적이며 대부분의 경우 권장됩니다. 이 주제에 대한 자세한 내용은 22장, 애플리케이션 개발을 참조하세요.

당연히 프로시저와 함수를 선언하는 것 외에도 사용, 즉 호출이 필요합니다. 이를 수행하는 방법에는 여러 가지가 있으며 "여러 가지"는 절제된 표현입니다. VBA는 사용자에게 프로시저와 함수를 호출하기 위한 유연한 시스템을 제공하므로 사용자는 무엇을 해야 할지 고민해야 합니다. 무엇프로시저를 호출하는 방법 중 하나입니다.

첫 번째로 간단한 호출은 다음과 같습니다.

이름ProcedureListActualParameters

절차명 -이것은 호출된 프로시저이기도 합니다.ActualPair 목록 - 미터 -이는 호출 시 프로시저에 전달되는 실제 매개변수 목록입니다. 프로시저가 선언될 때 지정된 필수 인수 목록과 일치해야 합니다. 실제 매개변수가 둘 이상인 경우 쉼표로 구분하여 나열됩니다. 해당 순서는 선언된 인수와 일치해야 합니다. 이와 같은 프로시저를 호출할 때 실제 매개변수 목록을 괄호로 묶을 필요가 없습니다.

Call 키워드를 사용하여 프로시저를 호출할 수도 있습니다. 프로시저 이름(실제 매개변수 목록)

이 호출 방법을 사용하는 모든 매개변수의 본질은 동일하게 유지됩니다. 차이점은 실제 매개변수 목록을 괄호로 묶어야 한다는 것입니다.

함수 호출은 프로시저 호출과 약간 다릅니다. 주요 차이점은 함수의 계산된 값을 일부 변수에 전달할 수 있다는 점이므로 함수 호출은 다음과 같습니다.

변수이름 = FunctionName(실제 매개변수 목록)

위의 프로시저와 함수를 예로 들어 호출 방법을 보여드리겠습니다.

프로그램 20.16. 프로시저 및 함수 호출

Dim bookshops(1 To 25) As Integer Dim 결과 As Boolean

결과 = SaleAbility(서점, 3000)

MsgBox(결과) End Sub

논의된 호출 메소드에서 실제 매개변수는 프로시저나 함수를 선언할 때 형식 인수와 동일한 순서로 배치되었습니다. 어떤 경우에는, 특히 프로시저에 많은 수의 선택적 인수가 포함되어 있는 경우 고유한 VBA 기능을 사용할 수 있습니다. 명명된 인수.이러한 호출을 통해 실제 매개변수의 값 외에 이름도 지정됩니다.

주어진 값이 해당하는 형식적 인수입니다. 이를 위해 인수 이름 뒤에는 콜론과 등호, 실제 매개변수가 옵니다. 이는 인수와 실제 매개변수 간의 관계를 확인할 수 있는 매우 편리한 기술입니다.

프로그램 20.17. 명명된 인수 사용

희미한 서점(1 ~ 25) 정수로

결과가 부울로 희미함

결과 = SaleAbility(arr:= 서점, numOfBooks:= 3000)

MsgBox(결과) End Sub

프로시저 선언 구문을 설명할 때 ParamArray 키워드에 대해 간략하게 언급했습니다. 이제 이에 대해 주의를 기울여야 합니다. 이전에 알려지지 않은 실제 매개변수의 수를 프로시저에 전달하는 기능은 다른 많은 프로그래밍 언어에도 고유합니다.

예를 들어 ParamArray 매개 변수를 사용하여 총 응용 프로그램 수를 계산하는 프로시저를 만듭니다. 테스트 프로시저에서 이 프로시저를 호출할 때 요청 배열의 실제 매개변수를 원하는 만큼 지정할 수 있습니다.

프로그램 20.18. ParamArray 매개변수 사용

Sub FullSum(ParamArray arr() As Variant)

정수형 딤섬

i = LBound(arr) UBound(arr)로 합계 = 합계 + arr(i)

MsgBox (합계) End Sub

전체 합계 100, 2000, 350, 450 끝 하위

프로시저나 함수를 호출하는 또 다른 방법, 즉 재귀 호출, 즉 프로시저가 자체 본문에서 호출되는 호출을 고려해 보겠습니다. 재귀 함수의 표준 예는 계승 계산입니다.

프로그램 20.19. 재귀 함수 호출

변형으로 함수 fctrl(n을 정수로)

만약에(N<= 1) Then fctrl = 1

fctrl = n * fctrlfn - 1) End If End 함수

MsgBox fctrl(20) End Sub

일반적으로 재귀 호출은 컴퓨터의 스택 메모리를 빠르게 채우고 처리하는 데 훨씬 더 많은 시간이 걸리기 때문에 과도하게 사용해서는 안 됩니다. 우리의 경우에는 재귀 호출을 일반 루프로 대체하여 사용을 피할 수 있습니다. 물론 트리 데이터 구조로 작업할 때와 같이 재귀 방법을 사용하면 작업 속도가 크게 빨라지는 상황이 있습니다.

마지막으로 참조에 의한 매개변수 전달과 값에 의한 매개변수 전달의 차이점을 보여주는 예를 살펴보겠습니다. 여기에는 RefVal 및 MainCalc라는 두 가지 프로시저가 포함됩니다. RefVal 도우미 프로시저는 다르게 설명되는 세 가지 형식 인수를 사용합니다. 또한 이 절차의 본문에서는 각각이 1씩 증가한 다음 해당 값이 화면에 표시됩니다. 메인 프로시저인 MainCalc는 변수 a, b, c의 값을 설정한 후 이를 RefVal 프로시저에 매개변수로 전달합니다. 이 경우 첫 번째 매개변수는 참조(기본값)로 전달되고, 두 번째 매개변수는 값으로, 세 번째 매개변수는 다시 참조로 전달됩니다. RefVal 프로시저가 반환된 후 기본 프로시저는 매개변수로 전달된 세 가지 변수의 값도 표시합니다. 화면에는 총 6개의 값이 표시됩니다. 먼저 숫자 11, 21, 31입니다(얻은 모든 값은 1씩 증가하고 RefVal 절차에 의해 출력됩니다). 그런 다음 숫자 AND, 20 및 31이 있습니다(이 값은 MainCalc 프로시저에 의해 출력되며 참조로 전달된 변수는 증가하지만 값으로 전달된 변수는 증가하지 않음).

프로그램 20.20. ByRef와 ByVal의 차이점

하위 RefVal(x, ByVal y, ByRef z)

MsgBox(z)End Sub

Sub MainCalc 0 a = 10 b = 20 s = 30 RefVal(a, b, c) 호출

MsgBox(a) MsgBox(b) MsgBox(c) End Sub

그래서 사용자 정의 프로시저와 함수로 작업하는 것을 살펴보았는데, 이 기능 외에도 프로그래머가 문자열 비교와 같은 표준 연산 구현에 대해 생각할 필요가 없도록 하는 다양한 내장 프로시저와 함수가 있습니다. 또는 특정 숫자의 사인을 취합니다. 불행하게도 우리 책의 범위로 인해 내장된 프로시저와 기능의 작은 부분조차 설명할 수 없지만(이것은 아무 소용이 없습니다) 내장된 Outlook에서 언제든지 전체 목록과 설명을 찾을 수 있습니다. 돕다.

JavaScript의 표현식조합이다 피연산자그리고 운영자.

운영표현식에서는 우선순위 값에 따라 순차적으로 실행됩니다(우선순위 값이 높을수록 높아집니다). 반환된 결과는 처리 중인 데이터 유형과 항상 동일한 유형이 아닙니다. 예를 들어 비교 연산에는 다양한 유형의 피연산자가 포함되지만 반환된 결과는 항상 부울 유형입니다.

쌀. 1. JavaScript의 표현식 구조

피연산자 JavaScript 스크립트에 의해 처리되는 데이터입니다. 피연산자는 단순 또는 복합 데이터 유형일 수 있으며 기타 표현식일 수도 있습니다.

연산자데이터로 다양한 연산을 수행하는 언어 기호입니다. 연산자는 구두점 문자나 키워드를 사용하여 작성할 수 있습니다.

피연산자 수에 따라 다음 유형의 연산자가 구별됩니다.
단항- 하나의 피연산자가 연산에 포함됩니다.
바이너리— 연산에 두 개의 피연산자가 포함됩니다.
세 개 한 벌— 세 개의 피연산자를 결합합니다.

가장 간단한 표현 형태는 다음과 같습니다. 오자— 자체적으로 평가되는 것(예: 숫자 100, 문자열 "Hello world" ). 변수는 할당된 값으로 평가되므로 표현식이 될 수도 있습니다.

JavaScript의 표현식 및 연산자

1. 산술 연산자

산술 연산자수학 연산을 수행하도록 설계된 이 연산자는 숫자 피연산자(또는 숫자 값을 저장하는 변수)에 대해 작동하여 결과로 숫자 값을 반환합니다.

피연산자 중 하나가 문자열이면 JavaScript 인터프리터는 이를 숫자 유형으로 변환한 다음 적절한 작업을 수행합니다. 유형 변환이 불가능한 경우 결과는 NaN(숫자 아님)이 됩니다.

표 1. 산술 연산자
운영자/운영 설명 우선순위
+ 추가 숫자 피연산자를 추가합니다. 피연산자 중 하나가 문자열이면 표현식의 결과도 문자열입니다. 12
- 빼기 첫 번째 피연산자에서 두 번째 피연산자를 뺍니다. 12
- 단항 마이너스 양수를 음수로 또는 그 반대로 변환합니다. 14
* 곱셈 두 피연산자를 곱합니다. 13
/ 분할 첫 번째 피연산자를 두 번째 피연산자로 나눕니다. 나누기 결과는 정수이거나 부동 소수점 숫자일 수 있습니다. 13
% 모듈로 나누기(나누기 나머지) 첫 번째 피연산자를 두 번째 피연산자로 정수로 나눈 나머지를 계산합니다. 정수와 부동 소수점 숫자 모두에 적용됩니다. 13
var x = 5, y = 8, z; z = x + y; // 13을 반환합니다. z = x - y; // -3을 반환합니다. z = - y; // -8을 반환합니다. z = x * y; // 40을 반환합니다. z = x / y; // 0.625를 반환합니다. z = y % x; // 3을 반환

2. 할당 연산자

할당 연산자변수에 값을 할당하는 데 사용됩니다. 결합 연산자를 사용하면 원래 값과 후속 값을 단일 변수에 저장할 수 있습니다.

var a = 5; // 변수 a에 숫자 값 5를 할당합니다. var b = "hello"; // 문자열 hellow를 변수 b에 저장합니다. var m = n = z = 10; // 변수 m, n, z에 숫자 값 10 x += 10을 할당합니다. // x = x + 10과 동일; x -= 10; // x = x - 10과 동일; x *= 10; // x = x * 10과 동일; x /= 10; // x = x / 10과 동일; x %= 10; // x = x % 10과 동일;

3. 증가 및 감소 연산자

운영 증가와 감소단항이고 피연산자의 값을 1씩 증가 및 감소시킵니다. 피연산자는 변수, 배열 요소 또는 객체 속성일 수 있습니다. 대부분의 경우 이러한 작업은 루프에서 카운터를 증가시키는 데 사용됩니다.

var x = y = m = n = 5, z, s, k, l; z = ++x * 2; /* 계산 결과 z = 12, x = 6 값이 반환됩니다. 즉, x의 값은 먼저 1만큼 증가한 다음 곱셈 연산이 수행됩니다. */ s = y++ * 2; /* 계산 결과 s = 10, y = 6 값이 반환됩니다. 즉, 먼저 곱셈 연산을 수행한 후 1만큼 증가한 값을 변수 y */ k = --m * 2에 저장합니다. // k = 8, m = 4 값을 반환합니다. l = n-- * 2; // 값 l = 10, n = 4를 반환합니다.

4. 비교 연산자

비교 연산자피연산자를 일치시키는 데 사용되는 경우 표현식의 결과는 true 또는 false 두 값 중 하나일 수 있습니다. 피연산자는 숫자뿐만 아니라 문자열, 논리값, 객체도 될 수 있습니다. 그러나 비교는 숫자와 문자열에 대해서만 수행할 수 있으므로 숫자나 문자열이 아닌 피연산자는 변환됩니다.

두 피연산자를 모두 숫자나 문자열로 성공적으로 변환할 수 없는 경우 연산자는 항상 false 를 반환합니다.

두 피연산자가 모두 문자열/숫자이거나 문자열/숫자로 변환될 수 있는 경우 문자열/숫자로 비교됩니다.

한 피연산자가 문자열이거나 문자열로 변환되고 다른 피연산자가 숫자이거나 숫자로 변환되는 경우 연산자는 문자열을 숫자로 변환하고 숫자 비교를 수행하려고 시도합니다. 문자열이 숫자가 아닌 경우 NaN으로 변환되고 비교 결과는 false 입니다.

대부분의 경우 비교 작업은 프로그램에서 분기를 구성할 때 사용됩니다.

표 4. 비교 연산자
운영자/운영 설명 우선순위
== 평등 동일한 값에 대해 두 값을 테스트하여 유형 변환을 허용합니다. 피연산자가 같으면 true를 반환하고 다르면 false를 반환합니다. 9
!= 불평등 피연산자가 같지 않으면 true를 반환합니다. 9
=== 정체성 엄격한 일치 정의를 사용하여 "ID"에 대한 두 피연산자를 테스트합니다. 유형 변환 없이 피연산자가 동일한 경우 true를 반환합니다. 9
!== 신원이 아님 본인 확인을 실시합니다. 유형 변환 없이 피연산자가 같지 않으면 true를 반환합니다. 9
> 더보기 첫 번째 피연산자가 두 번째 피연산자보다 크면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 10
>= 이상 첫 번째 피연산자가 두 번째 피연산자보다 작지 않으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 10
첫 번째 피연산자가 두 번째 피연산자보다 작으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 10
첫 번째 피연산자가 두 번째 피연산자보다 크지 않으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 10
5 == "5"; // 참을 반환합니다 5 != -5.0; // 참을 반환합니다. 5 === "5"; // false 반환 false === false; // true를 반환합니다. 1 !== true; // true를 반환합니다. 1 != true; // true가 1 3 > -3으로 변환되므로 false를 반환합니다. // 참을 반환합니다. 3 >= "4"; // 거짓을 반환

5. 논리 연산자

논리 연산자부울 값을 반환하는 조건을 결합할 수 있습니다. if 조건문에서 가장 자주 사용됩니다.

(2 < 3) && (3===3); // вернет true, так как выражения в обеих скобках дают true (x < 10 && x >0); // x가 0~10 범위에 있으면 true를 반환합니다. !false; // 참을 반환

6. 비트 연산자

비트 연산자 1과 0의 32비트 시퀀스로 피연산자에 대해 연산을 수행하고 연산 결과를 나타내는 숫자 값을 10진수 표기법으로 반환합니다. 정수는 피연산자로 간주됩니다. 피연산자의 소수 부분은 삭제됩니다. 예를 들어, 데이터 암호화, 플래그 작업, 액세스 권한 설명 등에 비트별 연산을 사용할 수 있습니다.

표 6. 비트 연산자
운영자/운영 설명 우선순위
& 비트 AND 두 비트가 모두 1이면 결과 비트도 1이 됩니다. 그렇지 않으면 결과는 0입니다. 8
| 비트별 OR 피연산자 중 하나가 위치에 1을 포함하면 결과도 해당 위치에 1을 포함하고, 그렇지 않으면 해당 위치의 결과는 0이 됩니다. 6
^ 독점 OR 단 하나의 값만 임의의 위치에 1을 포함하면 결과는 해당 위치에서 1을 포함하고, 그렇지 않으면 해당 위치의 결과는 0이 됩니다. 7
~ 거부 표현식 값의 이진 표현에 대해 비트 부정 연산이 수행됩니다. 원래 표현식에서 1이 포함된 모든 위치는 0으로 대체됩니다. 원래 표현식에서 0을 포함하는 모든 위치는 0이 됩니다. 양수는 0에서 시작하고 음수는 -1에서 시작하므로 ~ n == -(n+1) 입니다. 14
연산자는 첫 번째 피연산자의 비트를 두 번째 피연산자가 설정한 비트 위치 수만큼 왼쪽으로 이동합니다. 0은 오른쪽의 위치를 ​​채우는 데 사용됩니다. 왼쪽 피연산자와 동일한 유형의 결과를 반환합니다. 11
>> 오른쪽으로 비트 이동 연산자는 첫 번째 피연산자의 비트를 두 번째 피연산자에서 설정한 비트 위치 수만큼 오른쪽으로 이동합니다. 범위 밖으로 이동된 숫자는 제거됩니다. 결과의 부호를 보존하기 위해 최상위 비트(32번째)는 변경되지 않고 그대로 유지됩니다. 첫 번째 피연산자가 양수이면 결과의 최상위 비트가 0으로 채워집니다. 첫 번째 피연산자가 음수이면 결과의 최상위 비트가 1로 채워집니다. 값을 오른쪽으로 한 자리 이동하는 것은 2로 나누는 것과 같고(나머지는 버립니다), 오른쪽으로 두 자리 이동하는 것은 4로 나누는 것과 같습니다. 11
>>> 부호 없는 비트 단위 오른쪽 시프트 연산자는 첫 번째 피연산자의 비트를 두 번째 피연산자에서 설정한 비트 위치 수만큼 오른쪽으로 이동합니다. 첫 번째 피연산자의 부호에 관계없이 왼쪽에 0이 추가됩니다. 범위 밖으로 이동된 숫자는 제거됩니다. 11
var x = 9, y = 5, z = 2, s = -5, 결과; // 9는 1001과 같고, 5는 0101과 같습니다. result = x & y; // 1(0001과 동일)을 반환합니다. result = x | 와이; // 13(1101과 동일)을 반환합니다. result = x ^ y; // 12(1100과 동일)를 반환합니다. result = ~ y; // -6(1100과 동일)을 반환합니다. 결과 = x<< y; // вернет 288 (эквивалентно 100100000) result = x >> z; // 2(10과 동일)를 반환합니다. result = s >>> z; // 1073741822를 반환합니다(1111111111111111111111111111110과 동일).

7. 문자열 연산자

특별한 방법으로 문자열을 처리하는 여러 연산자가 있습니다.

"1" + "10"; // "110" "1" + 10을 반환합니다. // "110"을 반환합니다. 2 + 5 + "색연필"; // "7개의 색연필"을 반환합니다. "색연필" + 2 + 5; // "색연필 25개"를 반환합니다. "1" > "10"; // 거짓 "10"을 반환합니다.<= 10; // вернет true "СССР" == "ссср"; // вернет false x = "micro"; x+= "soft"; // вернет "microsoft"

8. 특수 연산자

표 8. 특수 연산자
운영자/운영 설명 우선순위
. 속성에 액세스 개체의 속성에 액세스합니다. 15
,다중 계산 한 줄에 작성된 여러 개의 독립 표현식을 평가합니다. 1
배열 인덱싱 배열 요소 또는 개체 속성에 액세스합니다. 15
() 함수 호출, 그룹화 작업을 그룹화하거나 함수를 호출합니다. 15
typeof 데이터 유형 정의 단항 연산자는 피연산자의 데이터 유형을 반환합니다. 14
instanceof 객체의 유형 확인 연산자는 객체가 특정 클래스의 인스턴스인지 확인합니다. 왼쪽 피연산자는 객체여야 하고, 오른쪽 피연산자는 객체 클래스의 이름을 포함해야 합니다. 결과는 왼쪽 개체가 오른쪽 클래스의 인스턴스이면 true이고, 그렇지 않으면 false입니다. 10
재산이 있는지 확인하는 중 왼쪽 피연산자는 문자열이어야 하고 오른쪽 피연산자는 배열 또는 객체여야 합니다. 왼쪽 값이 객체의 속성인 경우 결과는 true 입니다. 10
새로운 객체 생성 연산자는 정의되지 않은 속성을 가진 새 개체를 만든 다음 생성자 함수를 호출하여 초기화합니다(매개 변수 전달). 배열을 만드는 데에도 사용할 수 있습니다. 1
삭제 삭제 연산자를 사용하면 객체에서 속성을 제거하거나 배열에서 요소를 제거할 수 있습니다. 삭제에 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 배열 요소를 삭제해도 해당 길이는 변경되지 않습니다. 14
void 반환 값 없이 표현식 정의 단항 연산자는 피연산자의 값을 버리고 underfined 를 반환합니다. 14
?: 조건식 연산자 삼항 연산자를 사용하면 간단한 분기를 구성할 수 있습니다. 표현식에는 세 개의 피연산자가 포함됩니다. 첫 번째는 부울 값이거나 부울 값으로 변환되어야 하며, 두 번째와 세 번째는 임의의 값이어야 합니다. 첫 번째 피연산자가 true 이면 조건식은 두 번째 피연산자의 값을 사용합니다. 거짓이면 세 번째입니다. 3
document.write("안녕하세요 세상"); // hello world 문자열을 표시합니다. i = 0, j = 1; // 변수에 값을 저장 function1(10, 5); // 매개변수 10과 5를 사용하여 function1 함수 호출 var year = ; // typeof (a:1) 요소로 배열을 생성합니다. // "객체"를 반환합니다. var d = new Date(); // Date() 생성자를 사용하여 새 객체를 만듭니다. d instanceof Date; // true를 반환합니다. var mycar = (make: "Honda", 모델: "Accord", 연도: 2005); mycar에서 "만들다"; // 참을 반환합니다. var obj = new Object(); // 빈 객체 생성 var food = ["milk", "bread", "meat", "olive oil", "cheese"]; 음식 삭제; // 배열에서 네 번째 요소를 제거합니다. food x > 10 ? x * 2: x / 2; // x > 10이면 x * 2를 반환하고, 그렇지 않으면 x / 2를 반환합니다.

9. JavaScript의 주석

한 줄 주석: 주석 텍스트 앞에 // 문자가 옵니다.