안녕하세요. 포람페타는고3 입니다.

 

오늘은 맵을 사용하면서 혼동 될 수 있는

몇가지 헷갈리는 케이스를

확인해보려고 합니다.

 

java 자바에서 map 맵 사용시 null 체크 등

null과 관련되어 종종 혼동되는것들이

몇가지 있는데요,

 

직접 코딩을 해보면서 확인해보도록 하겠습니다.

 

 

💡오늘의 키워드
⭕️ Map에 정의하지않은 KEY의 VALUE값을 가져오는경우

⭕️ Map의 특정 KEY에 대한 VALUE값을 ("")으로 PUT 했을경우

⭕️ Map의 특정 KEY에 대한 VALUE값을 null로 PUT 했을경우

⭕️ 결론


⭕️ Map에 정의하지않은 KEY의 VALUE값을 가져오는경우

 

[코멘트]

map에 "car"라는 KEY는 정의되지않았습니다.

그렇다면, IF문에서 null pointer exception이 발생할까요?

 

 

[실행결과]

 

 

[설명]

null pointer exception은

발생하지않았습니다.

그럼 도대체 map.get("car")는

어떤 값과 비교를 해야할까요?

 


[코멘트]

null과 비교를 해보겠습니다.

 

[실행결과]

 

[코드해설]

null과 비교가 되는군요.

그럼 혹시 ("") 으로도 비교가 되는지 궁금합니다.


[코멘트]

("")과 map에 정의되지않은 key값의

get value와 비교해봅니다.

 

[실행결과]

 

[해석]

("")과 null은 엄연히 다른 것이기때문에

역시나 ("")과는 비교가 되지않음을

확인 할 수 있습니다.


⭕️ Map의 특정 KEY에 대한 VALUE값을 ("")으로 PUT 했을경우

[코멘트]

총 3개의 IF문이 있습니다.

어느 IF문이 실행될까요?

혹시, NPE(null pointer exception)이 발생하지는

않겠죠??

 

 

[실행결과]

 

[해설]

map에 ("")로 PUT을 했으면,

("")과 비교가 되는 것을 확인 하였습니다.

혹시나, null과도 비교 할 수 있지 않을까했지만

역시나 되지 않습니다.


⭕️ Map의 특정 KEY에 대한 VALUE값을 null로 PUT 했을경우

[코멘트]

이번엔 map의 "car"라는 KEY의 value를 null로 PUT하였습니다.

이번엔 몇번째 IF문이 실행될까요?

 

 

[실행결과]

 

[설명]

이번에도 역시 PUT한 VALUE의 값과 동일한

null과 비교되는것을 확인 할 수 있습니다.


⭕️ 결론

1.MAP에 PUT하지않은 KEY값의 VALUE를

GET할경우 NPE(null pointer exception)는

발생하지않는다.

 

2.("")값을 PUT 하였다면, null과 비교할게아니고

동일한 값인 ("")과 비교 가능하다.

(empty, 즉 비어있는 값은 비어있는 값으로 비교가능)

 

3.null 값을 map에 PUT 하였다면, null과 비교한다.

("")과 null은 다른 값이다.

 

-이렇게 하나씩 헷갈리는 것을 간단하게나마

직접 확인해가다보면 언젠간 더이상

혼동스러운것들은 없을 날이 올거라봅니다.

 

'Language > Java' 카테고리의 다른 글

Java-split 문자열 배열 변환, 문자열 한글자씩 배열 변환  (0) 2022.09.28
java-for문 break사용  (0) 2022.09.27

💡오늘의 키워드
⭕️ split()의 기본사용법

⭕️ split()의 주의사항

⭕️ split() 꿀팁

⭕️ split() 퀴즈

 

 

자바로 여러 기능을 구현 할 때 split() 은 자주 사용되는 API이다.

예를들어 전화번호 010-1111-1234 또는 주민등록번호 931123-1023582 등

특정포멧을 가지고 있는 데이터를 가공할때 유용하게 사용 할 수 있다.

실제 프로젝트에서는 다양한 형태의 문자열 데이터를 가공하는 일이

많기때문에 정확한 사용법을 알고있어야 한다.

사용시 주의사항 딱 한가지만 기억하면 된다. 

 

 

⭕️ split()의 기본사용법

class SplitDemo {

    public static void main(String[] args) {

        String str_sample = "010-1111-1234";

        String[] arrSample = str_sample.split("-");

        int index = 0;
        for(String item : arrSample)
        {
            System.out.println("item[" + index + "]" + "=" + item);
            index++;
        }
    }
}

 

 

[코드설명]

str_sample.split() 의 파라미터로 넘긴 "-" (대쉬기호)를 기준으로

문자열을 분리하여 각각을 배열에 순서대로 담는다.

 

[실행결과]

item[0]=010
item[1]=1111
item[2]=1234

 

 

⭕️ split()의 주의사항

[코드설명]

split()함수의 인자(파라미터)는, 문자(char)가 아니다.

정규표현식(regex)을 파라미터로 넣어야한다.

 

 

예를들어 "." (마침표) 를 split()의 파라미터로 넣고

문자열을 배열로 변환하는 코드를 작성해보았다.

class SplitDemo {

    public static void main(String[] args) {

        String strSample = "2022.09.28";

        String[] arrSample = strSample.split(".");

        int index = 0;
        for(String item : arrSample)
        {
            System.out.println("item[" + index + "]" + "=" + item);
            index++;
        }

        System.out.println("arrSample.length = " + arrSample.length);
        System.out.println("arrSample[0] = "     + arrSample[0]);
    }
}

[코드설명]

for문의 System.out.println()이 실행되지않기때문에,

그 바로 아래에 System.out.println()문을 2개 추가하였다.

 

 

[실행결과]

arrSample.length = 0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at SplitDemo.main(Main.java:22)

 

[추가설명]

split()의 파라미터로 "."(마침표)를 넣어서 문자열이 3덩어리로 

잘라져 배열에 순서대로 담기길 원했지만,

예상대로 작동하지않는것을 확인 할 수 있다.

 

그 이유는,

정규표현식에서 "." (마침표) 는 와일드카드로 모든문자를 의미하며

우리눈에 보이는 "."마침표를 "." 마침표 그대로 인식하지 않는다.

 

자바 split() 함수에서 마침표를 사용하기위해선

마침표를 대괄호로 감싸서 정규표현식으로 바꿔 넣어주어야한다.

"[.]" 로 사용해야한다.

"//." 이것은 동작하지않는다.

class SplitDemo {

    public static void main(String[] args) {

        String strSample = "2022.09.28";

        String[] arrSample = strSample.split("[.]");

        int index = 0;
        for(String item : arrSample)
        {
            System.out.println("item[" + index + "]" + "=" + item);
            index++;
        }

        System.out.println("arrSample.length = " + arrSample.length);
        System.out.println("arrSample[0] = "     + arrSample[0]);
    }
}

[실행결과]

item[0]=2022
item[1]=09
item[2]=28
arrSample.length = 3
arrSample[0] = 2022

 

[추가설명]

굳이 정규표현식 변환 문자를 암기 할 필요는 없으며

필요시 검색해서 사용해도 충분하지만,

자주쓰이는 정규표현식 문자 4개 5개 정도는 암기해두는것도

좋다고 생각한다.

 

⭕️ split() 꿀팁

자르는 구분 기호 없이 모든 문자열의 한글자 한글자를

각각 다 배열로 치환하고 싶을때

class SplitDemo {

    public static void main(String[] args) {

        String strSample = "abcdefghijklmnop";
        String[] arrSample = strSample.split("");
        for(String str : arrSample)
        {
            System.out.println("srt = " + str);
        }
    }
}

[코드설명]

split() 함수의 파라미터로 ""를 넣어주면

문자열의 모든 문자 하나씩을 각각 배열로 반환해준다.

 

 

[실행결과]

srt = a
srt = b
srt = c
srt = d
srt = e
srt = f
srt = g
srt = h
srt = i
srt = j
srt = k
srt = l
srt = m
srt = n
srt = o
srt = p

 

 

⭕️ split() 퀴즈

class SplitDemo {

    public static void main(String[] args) {

        String tmp1     = "123.456";
        String tmp2     = ".123456";
        String tmp3     = "123.";
        String tmp4     = "1234";
        String tmp5     = ".123";
        String tmp6     = "123.";
        String tmp7     = "123...";
        String tmp8     = "...123";
        String tmp9     = "123...1";
        String tmp10    = "123...1..";

        String[] arrTmp1    = tmp1.split("[.]");
        String[] arrTmp2    = tmp2.split("[.]");
        String[] arrTmp3    = tmp3.split("[.]");
        String[] arrTmp4    = tmp4.split("[.]");
        String[] arrTmp5    = tmp5.split("[.]");
        String[] arrTmp6    = tmp6.split("[.]");
        String[] arrTmp7    = tmp7.split("[.]");
        String[] arrTmp8    = tmp8.split("[.]");
        String[] arrTmp9    = tmp9.split("[.]");
        String[] arrTmp10   = tmp10.split("[.]");

        System.out.println("-----------------arrTmp1------------------------");
        for(String str : arrTmp1){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp2-----------------------");
        for(String str : arrTmp2){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp3------------------------");
        for(String str : arrTmp3){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp4------------------------");
        for(String str : arrTmp4){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp5------------------------");
        for(String str : arrTmp5){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp6------------------------");
        for(String str : arrTmp6){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp7------------------------");
        for(String str : arrTmp7){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp8------------------------");
        for(String str : arrTmp8){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp9------------------------");
        for(String str : arrTmp9){ System.out.println("str = " + str); }
        System.out.println("-----------------arrTmp10------------------------");
        for(String str : arrTmp10){ System.out.println("str = " + str); }
        System.out.println("------------------------------------------------");
    }
}

[코드설명]

분리의 기준이되는 split() 정규식 파라미터가, 

문자열의 가장 앞쪽 또는 가장 뒤쪽에 있는경우

혹은 연속으로 있는 경우

자바는 내부적으로 어떻게 처리하기로 약속되어있을까요?

 




 

 

[실행결과]

-----------------arrTmp1------------------------
str = 123
str = 456
-----------------arrTmp2-----------------------
str = 
str = 123456
-----------------arrTmp3------------------------
str = 123
-----------------arrTmp4------------------------
str = 1234
-----------------arrTmp5------------------------
str = 
str = 123
-----------------arrTmp6------------------------
str = 123
-----------------arrTmp7------------------------
str = 123
-----------------arrTmp8------------------------
str = 
str = 
str = 
str = 123
-----------------arrTmp9------------------------
str = 123
str = 
str = 
str = 1
-----------------arrTmp10------------------------
str = 123
str = 
str = 
str = 1
------------------------------------------------

 

 

[추가설명]

 

일부는 이해가 되고

또 일부는 이해가 가지 않는 결과 일 수도 있습니다.

 

하지만 걱정할 필요 없습니다.

 

그냥 저렇게 하기로 약속되어있는것일뿐

반드시 이해해야만하는 이유는 없으며,

있다해도 몰라도 괜찮습니다.

 

우리가 집중해야 할 것은

저렇게 결과가 나온다 라는것만 알고있어도,

그것으로 충분합니다.

 

 

'Language > Java' 카테고리의 다른 글

java-Map null 체크 value put empty  (0) 2022.10.06
java-for문 break사용  (0) 2022.09.27

💡오늘의 키워드
⭕️ for문에서 break의 기본사용법

⭕️ for문에서 break의 응용사용법1

⭕️ for문에서 break의 응용사용법2

⭕️ for문에서 break의 고급예제1

 

보통 자바 for문에서 break를 사용하는 일은 거의 없지만,
불필요한 Loop 실행을 방지하고자할땐 꼭 사용해야한다.

 


⭕️ for문에서 break의 기본사용법

// 라벨링 하지않은 for문
public class Main {
    public static void main(String[] args) {

        for (int k = 0; k < 10; k++)
        {
            System.out.println("K FOR Loop k = " + k);

            if(k == 3)
            {
                break;
            }
        }
        
        System.out.println("all FOR Loop escape");
    }
}

[코드설명]

for문은 0~9까지 10번 반복되어 실행되어야 하지만,

0,1,2,3 까지 4회 반복 된 후 중간에 if( k == 3)을 만나 break 가 걸려

반복문을 중단하고 빠져나오게 된다.

 

[실행결과]

K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
all FOR Loop escape

 

 


⭕️ for문에서 break의 응용사용법1

// 라벨링처리한 for문
public class Main {
    public static void main(String[] args) {

        subLoop:
        for(int j = 0; j < 5; j++)
        {
            lastLoop:
            for (int k = 0; k < 10; k++)
            {
                System.out.println("K FOR Loop k = " + k);

                if(k == 3)
                {
                    break lastLoop;
                }
            }
            System.out.println("j FOR Loop j = " + j);
        }
    System.out.println("all FOR Loop escape");
    }
}

[코드설명]

-중첩된(겹쳐있는) for Loop를 사용하는경우, break를 함께 사용해야 할 경우 

각 for Loop에 라벨(label) 이라는 것을 붙혀, 각 for Loop를 구별 할 수 있다.

(예시에선 - subLoop:와 lastLoop:로 사용하였다. )

(라벨이름은 자유롭게 사용 할 수 있지만, for문의 목적을 한번에

알아챌 수 있도록 작성하는게 좋으며, 라벨이름 뒤에 콜론(":")을 붙혀 사용한다.)

 

 

[실행결과]

K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
j FOR Loop j = 0
K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
j FOR Loop j = 1
K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
j FOR Loop j = 2
K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
j FOR Loop j = 3
K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
j FOR Loop j = 4
all FOR Loop escape

 

 

 

⭕️ for문에서 break의 응용사용법2

public class Main {
    public static void main(String[] args) {

        subLoop:
        for(int j = 0; j < 5; j++)
        {
            lastLoop:
            for (int k = 0; k < 10; k++)
            {
                System.out.println("K FOR Loop k = " + k);

                if(k == 3)
                {
                    break subLoop;
                }
            }
            System.out.println("j FOR Loop j = " + j);
        }
    System.out.println("all FOR Loop escape");
    }
}

[코드설명]

lastLoop: 에서 break가 없다면 k가 0~9 까지 반복되어야 하지만, 

k가 3이되었을때, lastLoop: 가 아니라, 부모인 subLoop: 를 break시켜버리면서( j = 0 )

그 즉시, 전체 for Loop가 종료되었다.

for Loop의 라벨(label)은 break 명령어와 함께 사용하여 for Loop를 자유롭게 종료 시킬 수 있다.

 

 

[실행결과]

K FOR Loop k = 0
K FOR Loop k = 1
K FOR Loop k = 2
K FOR Loop k = 3
all FOR Loop escape

 

 

 

 

 

⭕️ for문에서 break의 고급예제1

class BreakWithLabelDemo {
    public static void main(String[] args) {

        int[][] arrayOfInts = {
                { 32, 87, 3, 589 },
                { 12, 1076, 2000, 8 },
                { 622, 127, 77, 955 }
        };
        int searchfor = 12;

        int i;
        int j = 0;
        boolean foundIt = false;

        search:
        for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length;
                 j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }

        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

 

[실행결과]

Found 12 at 1, 0

 

 

메이븐에 대해 공부를 하기 전 내가 내린 메이븐의 정의.

 

-maven 메이븐이란? 문제만 안 생긴다면 굳이 공부를 하지 않아도 되는 것 중 하나, 하지만 문제가 발생하면 매우 귀찮은

모기와 같이 성가신 것 (회사에선 너가 아니어도 신경 쓸 일이 한두 가지가 아니니 제발 좀 그냥 알아서 돼라..)

메이븐 빌드 에러

하지만 누가 그랬는가?

인생에 똑같은 문제가 3번이상 발생하면 더 이상 외면하지 말고, 본질적인 문제에 대해 조치를 하는 게 좋다고

그렇게만 해도 나름 괜찮은 인생을 살 수 있을 것이라고

나의 본심

 

ㅇㅋ절대적으로 공감한다. 더 이상 메이븐으로 이유도 모르는 에러로 고통받고, 역시 영문도 모른 체 해결되는 이런 상황을 더 이상 앉아서 지켜만 보고 싶지 않다.

 

지난 수년간 메이븐 자바 프로젝트를 수행하며 열심히 외면했던 이 문제를 내 인생에서 소각하기로 마음을 먹었다.

그리고 1년에 한번 혹은 두 번꼴로 주기적으로 발생했다는 것이 기억나기 시작함.


바로 결론부터 말하자면, maven은 빌드 도구이다. build tool

 

그럼 빌드는 뭔가?

 

[소스코드 파일]을 [소프트웨어 가공물]로 변환하는 것.

프로그램 빌드는 (건축)건물 빌드와 거의 동일한 원리가 적용되기 때문에 build라는 단어를 사용한다.

마치 모래, 시멘트, 벽돌, 철근 등으로 건물을 지어 올리는 것과 유사한 과정을 거치기 때문에 build라는 단어가 딱임.

예시

추가로 빌드 도구  maven은 여기서 더 확장하여, 내친김에 배포( 개념적으로 판매와 유사함)까지 다루는 도구라고

생각하면 됩니다.

 

무언가에 처음 접근 할 땐 밖에서 큰 개념에서부터 접근하는 게 좋을 것 같아, 메이븐이란 무엇인가,

메이븐 빌드란 무엇인가에대해 초 간단하게 작성해봤습니다.

 

앞으로 메이븐프로젝트에 대해서 더 쉽고 자세히 알아보는 포스팅을 시리즈로 작성해보도록 하겠습니다.

 

(사람이 바로 들어와 거주 할 수 있는 상태까지) 건물을 지어 올린다는 것은,

생각보다 단순한, 하지만 제법 많은 과정이 모여 이루어지는거라고 생각하면 편합니다. 

 

메이븐 프롤로그 part.0 끝

 

서브넷 마스크의

 

개념적인 부분 보다는

 

기술적인 부분에 비중을 조금 더 두고 설명합니다.

 

중간에 브로드캐스트주소니 대표주소니 하는용어가

 

나오지만 모르는 단어가 나오면

 

일단 그냥 pass하고 서브넷에 대해 감을 잡는 것에

 

중점을 두시면 좋겠습니다.


(SUBNET) 서브넷 이라는 것은

 

간단하게

 

전체를 기준으로

 

한정된 일정부분의 부분네트워크라는 뜻.


(MASK) 마스크 라는 것은

 

마스크연산 (AND)연산을 뜻한다. (=마스킹)

 

bit관련 연산중 AND연산은 자주 사용되니 이참에 알아두자.

 

[AND연산]

1과 1을 AND연산한 결과는 1

1과 0을 AND연산한 결과는 0

0과 1을 AND연산한 결과는 0

0과 0을 AND연산한 결과는 0

 

어? 뭔가 익숙하다

 

1 x 1 = 1

1 x 0 = 0

0 x 1 = 0

0 x 0 = 0

 

쉽게 곱하기라고 생각하면 된다.


데이터를 0으로 바꾸고싶은 곳에

 

0을 두고 AND(마스크)연산을 해버리면

 

해당 bit는 무조건 0으로 처리된다.


(MASK연산의 예)

 

(1010 1101) 8bit의 데이터로 예를 들어보자

 

1010 1101에서 앞에 4자리는 모두 그대로 두고

 

뒤에 4자리(4bit)만 모두 0으로 만들고싶을때

 

1010 1101 -> 1010 0000 이렇게


       1010 1101

AND 1111 0000

---------------------

       1010 0000


1010 1101을

1111 0000과

AND연산하면 

 

1010 0000 이 된다.

 

즉, 앞에 4자리는 모두 그대로 유지되고

 

0이 있는 뒤에 4자리(4bit)만 모두 0으로 처리된다.

 

(=마스킹된다.)


이번엔 서브넷 설명

 

C클래스의 네트워크를 예를들면

 

일단,

 

(IP주소는 32자리 이진수로 구성되어있다.)

 

그리고

 

C클래스의 서브넷 마스크는

아래와 같다.

255 . 255 . 255 . 0

=

11111 1111  .  1111 1111  .  1111 1111  .  0000 0000


C 클래스에서는

 

총 256개의 ip를 사용 할 수 있지만

 

256에서 2개(대표주소, 브로드캐스트주소) 빼고

 

실제로는

 

254개의 ip만 사용 할 수 있다.


일반적으로 가정집과 중소규모의 사무실에서는

 

C클래스(가용ip개수가254개)를 사용하지만 

 

사실 254개의 반의 반도 사용하지 않는 경우가 

 

대부분이다.


그래서

 

네트워크를 작게 나누어

 

그 나누어진 ip대역 안에서만

 

사용 할 수 있는 만큼만의 ip만을

 

사용하고싶을때 

 

바로 서브넷 마스크를 사용하면 된다.


클래스 별 기본 서브넷 마스크


(예1)

 

C 클래스의 서브넷 마스크가

 

255.255.255.0 으로 되어있는경우

 

해당 C클래스는

 

분할 되어있지 않은

 

한개의 네트워크로 구성되어있다는 의미이다.

 

 

그 이유는 ip와 서브넷 마스크로 마스킹 연산한

 

결과 값이 오직 단 한가지로만 나오기때문이다.

대표주소 : 211.168.83.0

브로드캐스트주소 : 211.168.83.255


(예2)

 

C 클래스의 서브넷 마스크가

 

255.255.255.128

(1111 1111 . 1111 1111 . 1111 1111 . 1000 0000)

 

로 되어있는경우

 

해당 C클래스는

 

2개의 네트워크로

 

분할되어있다는 의미이다.

 

그 이유는 결과 값이 2개로 나오기때문이다.

분할된 네트워크 (1/2)

대표주소 : 211.168.83.0

브로드캐스트주소 : 211.168.83.127

 

분할된 네트워크 (2/2)

대표주소 : 211.168.83.128

브로드캐스트주소 : 211.168.83.255


(예3)

 

C 클래스의 서브넷 마스크가

 

255.255.255.192

(1111 1111 . 1111 1111 . 1111 1111 . 1100 0000)

 

로 되어있는경우

 

해당 C클래스는

 

4개의 네트워크로

 

분할되어있다는 의미이다.

 

그 이유는 결과 값이 4개로 나오기때문이다.

 

 

분할된 네트워크 (1/4)

대표주소 : 211.168.83.0

브로드캐스트주소 : 211.168.83.63

 

분할된 네트워크 (2/4)

대표주소 : 211.168.83.64

브로드캐스트주소 : 211.168.83.127

 

분할된 네트워크 (3/4)

대표주소 : 211.168.83.128

브로드캐스트주소 : 211.168.83.191

 

분할된 네트워크 (4/4)

대표주소 : 211.168.83.192

브로드캐스트주소 : 211.168.83.255


C클래스의 서브넷의 경우


C클래스에서 네트워크를

 

3개로 나누어야 할 경우

 

255.255.25.192로

 

서브넷 마스크를 설정해서

 

하나의 네트워크를

 

4개로 분할하고

 

3개의 네트워크를 사용하고 

 

1개는 사용하지 않는 것으로 처리해야만 한다.

 

 

일단, 오늘은 여기까지..

 

 

 

 

자바스크립트를 실행해보려면 자바스크립트 인터프리터가 필요하다.

 

다행히 모든 웹브라우저에는 자바스크립트 인터프리터가 내장되어있다.

 

또한 웹브라우저는 모두 간단한 Console API를 가지고있다.

 

console.log( ) 함수를 사용하면 콘솔에 텍스트를 출력할 수 있는데, 이는 코드를 디버깅 할 때 유용하다.

 

또한 조금 터프한 방법이지만, 출력의 결과나 디버깅 메시지를 표시하기위해 alert( ) 함수를 사용할 수도 있다.

 

이 함수에 문자열을 넘기면 모달 다이얼로그 박스(Modal Dialog Box)로 출력한다.

 

 

*모달 다이얼로그 박스(Modal Dialog Box)

일단 출력 되면, 종료 시키기 전까지 원래의 화면으로 돌아갈 수 없는 대화상자를 말한다.

(반대) 모달리스 다이얼로그 박스(Modaless Dialog Box).

'Language > JavaScript' 카테고리의 다른 글

자바스크립트: 다양한 이름과 버전  (0) 2022.01.02

자바스크립트는 웹 초창기에 넷스케이프사에서 만들었다.

 

자바스크립트는 '썬마이크로시스템즈(=현 오라클)에서 상표권 라이선스를 가지고 있고,

 

언어 자체 구현은 넷스케이프(=모질라)에서 담당했다.

 

넷스케이프는 이 언어를 표준화하기 위해서 ECMA(European Computer Manufacturer's Association)에 제출했는데,

 

상표권 문제로 언어의 이름을 ECMAScript라고 정했다.

 

같은 이유로 마이크로소프트가 제작한 언어의 이름은 JScript가 되었다.

 

하지만 사람들은 그냥 모두 자바스크립트라고 부른다.

 

자바스크립드 언어 자체만 볼 때, 실질적인 버전은 ECMAScript 3과 5뿐이다.

(ECMAScript4는 수년간 개발되어 왔지만, 기존의 자바스크립트와는 너무 달라서 결국 세상에 나오지못했다.)

 


 

'Language > JavaScript' 카테고리의 다른 글

자바스크립트 실행해보기  (0) 2022.01.02

+ Recent posts