728x90

 

변수와 자료형

 

1.변수 선언

1)지역변수 & 전역변수

지역변수 : 함수 내부에서 'var 변수명;'
전역변수 : 함수 내부에서 '변수명;'
전역변수 : 함수 밖에서 '변수명;' 혹은 'var 변수명;'
// 함수 외부
str1 = "전역변수";
var str2 = "var전역변수";

// 함수 내부
var str1 = "지역변수1"
var str3 = "지역변수2"

console.log('str1 : ' + str1);              /* 지역 변수 */
console.log('this.str1 : ' + this.str1);    /* 함수 안에 있는 전역변수 */
console.log('window.str1 : ' + window.str1);/* 전역변수 : 함수 내부에서는 전역변수를 this.나 window.을 찍어서 구분해줘야한다 */
// 자바 때, 매개변수도 지역변수. 구분을 위해서 this썼었음
// js도 위처럼 this나 window 써서 구분해줌

console.log('str2 : ' + str2);               // var전역변수
console.log('this.str2 : ' + this.str2);     // var전역변수
console.log('window.str2 : ' + window.str2); // var전역변수

console.log('str3 : ' + str3);               // 지역변수
console.log('this.str3 : ' + this.str3);     // undefined : 없다는 얘기 // 지역변수인데 전역변수 구분용 접두어를 붙여놨으니 undefined
console.log('window.str3 : ' + window.str3); // undefined  : js에서는 정의가 안된 데이터 '취급'함

 - 지역변수 : 함수 내부에서 'var 변수명;'으로 선언하면 지역변수가 됨

 - 전역변수 : 

함수 내부에서 '변수명; '으로 선언하거나 함수 밖에서 '변수명;' 혹은 'var 변수명;'으로 선언하면 전역변수가 됨

 

2)우선권 : 전역과 지역변수의 우선권

전역변수와 지역변수가 동일한 이름인 경우,

함수 내부에서 변수 명을 호출하면 지역변수가 우선권을 가짐

 

window. this. : 전역변수와 지역변수 구분하는 코드

전역 변수 사용 시 'window. 변수 명;' 혹은 'this.변수 명;'으로 표현하여 지역변수와 구분

전역변수는 해당 window내에서 어디든 사용할 수 있으며, 지역변수는 해당 함수 내에서만 사용 가능

window.onload = function()

페이지가 로드되면 자동으로 실행하는 함수

한 페이지에서 하나의 onload함수만 기술 가능 페이지가 로드가 되면 한번에 여러개 실행되고 싶으면 한번에 하나만 가능해서 단점으로 생각해서 제이쿼리에서 여러개 실행가능하게 만들어둠

window.onload = function(){

추가자료

https://itworldyo.tistory.com/101

 

2.자료형

JS에서는 자료형 별로 변수 타입이 지정되지 않고,

리터럴에 의해서 자료형 결정

 

JS 데이터 타입

string

number

boolean

Array(object)

Object(object)

function

 

<h3>자료형</h3>
<p>자바스크립트에서는 자료형 별로 변수 타입이 지정되지 않고 리터럴에 의해서 자료형 결정</p>
<button onclick="typeTest();">자료형 테스트</button>
<script>
  function typeTest(){
    var name = "강건강";                     // 문자열
    var age = 20;                           // 숫자
    var check = true;                       // 논리값        
    var hobby = ['축구', '야구', '농구'];    // 배열
    var user = {                             // 객체   
        name: '강건강',
        age: 20,
        id: 'user01'              
    };
    var testFunction = function(num1, num2){
        var sum = num1 + num2;
        alert(sum);
    };
    
    // 콘솔창에서 '값' 확인
    console.log(name);
    console.log(age);
    console.log(check);
	  console.log(hobby);     // (3) ['축구', '야구', '농구']
    console.log(user);      // {name: '강건강', age: 20, id: 'user01'}
    console.log(testFunction); // ƒ (num1, num2){
                               //                var sum = num1 + num2;     
                               //                 alert(sum);
                               //               }
    // 콘솔창에서 '타입' 확인
		console.log(typeof(name));  // string
    console.log(typeof(age));   // number
    console.log(typeof(check)); // boolean
    console.log(typeof(hobby)); // object   // array
    console.log(typeof(user));  // object
    console.log(typeof(testFunction));  // function
    // typeof연산자 : 값의 자료형을 확인하는 연산자
  }
</script>

 

728x90
반응형
728x90

 

JAVA1 - 14.6. 나의 만들기 - 조건문

 

double valueOfSupply = Double.parseDouble(args[0]); //
double vatRate = 0.1;
double expenseRate = 0.3;
double vat = valueOfSupply*vatRate;
double total = valueOfSupply + vat;
double expense = valueOfSupply*expenseRate;
double income = valueOfSupply - expense;

double dividend1 = (valueOfSupply - expense) * 0.5;
double dividend2 = (valueOfSupply - expense) * 0.3;
double dividend3 = (valueOfSupply - expense) * 0.2;

if (income > 10000.0) {
dividend1 = income * 0.5;
dividend2 = income * 0.3;
dividend3 = income * 0.2;
} else {
dividend1 = income * 1.0;
dividend2 = income * 0;
dividend3 = income * 0;
}

run configuration에서 arguments 50000.0 5000.0 세팅

 


 

JAVA1 - 14.7. 나의 만들기 - 배열(Array)

수식배분 0.5,0.3,0.2 변수 전환 rate1,2,3

흔한 변수와 변수가 많아질 수록(코드가 길어질 수록) 문제발생

다른 사람이 같은 변수를 만든다던가 만든 나도 까먹는다던가

해결책은 배열(array)

 

배열(Array) 사용장점

변수가 세개에서 하나로 줄고, dividendRates[0~2] 연관된 값이라는 것을 직관적으로 있고,

변수가 오염될 가능성이 현저하게 감소, 연관된 자료 정리정돈 기능

 

*코드가 길고 복잡해지기 마련이기에 항상 코드 정리정돈할

*반복문과 배열을 사용면 폭팔적인 효과가 있음

 

 

public static void main(String[] args) {

 - 여기 String[] args 문자열로 이루어진 배열이라는 의미

 - 바로 아래 Double.parseDouble(args[0]); 위의 String[] args배열의 값을 꺼내오는 (배열값 도입)

 

double[] 변수명 = new double[3]; // double[] 의미 : 더블형으로 이루어진 배열이다

                // new double[3] 의미 : 더블형 데이터를 세개 담을 있는 공간 만들어진

 

 

아래 rate1,2,3 배열을 사용하여 dividendRates[0~2] 변경

double[] dividendRates = new double[3];
dividendRates[0] = 0.5;
dividendRates[1] = 0.3;
dividendRates[2] = 0.2;

double dividend1 = (valueOfSupply - expense) * dividendRates[0];
double dividend2 = (valueOfSupply - expense) * dividendRates[1];
double dividend3 = (valueOfSupply - expense) * dividendRates[2];

 

 


 

 

JAVA1 - 14.8. 나의 만들기 - 반복문(Loop)

배열과 반복문은 같이 쓰는게 시너지가 크다

 

수익 배분해야하는 투자자가 만명이 넘는 기업에서 일한다고 상상해보자

dividend 코드줄이 엄청나게 많아야한다면…?

반복문(loop) 해결가능

 

double dividend1 = income * dividendRates[0];
double dividend2 = income * dividendRates[1];
double dividend3 = income * dividendRates[2];

// println()을 반복문으로 해결

 

int i = 0; // 변수 초기화 및 반복문수 기록

while(i < dividendRates.length) { # dividend의 수(투자자수)만큼 반복해야함 // arguments에 입력값 입력        
System.out.println("Dividend 1 : " + (income * dividendRates[i]));  # dividend1을 dividendRates[i]로 변경

i = i + 1;

}

print문을 수천 수억개의 코드를 반복문 하나로 해결!

수정,유지보수도 이거 하나만 고치면 된다

 

728x90
반응형

+ Recent posts