본문 바로가기
Web/자바스크립트

javaScript #3 :: 전역지역변수 | type변환 | 날짜Date | number관련 함수 | 난수 구하기

by 긴모양 2020. 4. 28.

노션 3일차 20.04.22 - 20.04.23

전역변수&지역변수 | 내부함수&외부함수

  • 전역변수
    : 함수 외부에서 선언한 변수, 프로그램 전체에서 접근할 수 있는 변수
  • 지역변수
    : 함수 내부에서 선언한 변수, 함수가 실행되면 만들어지고 함수가 종료되면 소멸하는 변수로 함수 외부에서는 접근 할 수 없다.
  • 내부함수
    :내부 함수가 함수 외부에 내부 함수와 같은 이름이 있을 때, 내부 함수가 우선적으로 호출된다. 함수 내부에 있는 함수는 함수의 내부에서만 호출 할 수 있다. 함수 외부에서는 호출이 불가능하다.

 

String <-> Number 변환 (read only)

: JS의 특징 중 하나는 데이터 타입을 신경쓰지 않아도 된다는 것. 그만큼 편하지만 오류가 생길 확률이 높다. 타 언어들은 변수에 처음으로 값을 할당하면, 자동적으로 type이 확정되고 그 후에 다른 type의 값을 할당 할 수 없다.

💡NaN = Not to Number : 더하기나 빼기 연산자가 있어 컴퓨터가 숫자인 줄 알고 계산하려고 했더니 계산이 불가능하고 이상한 답이 나왔다는 의미. -(마이너스)의 경우, 오로지 숫자에만 사용되는 연산자이다. "안녕하세요" - "안녕" = NaN이다. 
  • number + string ⭕️
    : +의 양쪽을 보고 string이 존재하면 number또한 string으로 전환해서 더해준다. "number" + "string" = "numberstring";
    -> 이 경우 number함수 사용해서 string을 number형으로 바꿔주는 것이 바람직하다.
parseFloat("1.901");
Number("1.901");
parseInt("200") + 1;
  • string + string ⭕️
    : "string" + "string" = "stringstring"
  • string - string ❌
    : -는 숫자에만 적용되는 연산자
  • number - string ⭕️
    : number - "string" = number, -의 경우에는 string을 숫자로 전환해준다. 예외는 존재한다. string의 값이 number가 아니고 문자의 경우에는 NaN이 출력된다.

 

이외의 전환 경우

: number를 string으로 toString, 연산자의 특성을 활용한 type전환

//Number형에서 String형으로 변환하고 싶을 수도 있습니다.
var numberAsNumber = 1234; 
var numberAsString = numberAsNumber.toString();

console.log(numberAsNumber, typeof numberAsNumber); //number
console.log(numberAsString, typeof numberAsString); //string

//+ 연산의 특성을 활용하여 아래와 같이도 변환.
var numberAsNumber = 1234; 
var numberAsString = 1234 + "";

console.log(numberAsNumber, typeof numberAsNumber); //number
console.log(numberAsString, typeof numberAsString); //string


//- 연산의 특성을 활용해서 String 형을 Number형으로 변환
var numberAsNumber = "1234"; 
var numberAsString = numberAsNumber - 0;

console.log(numberAsNumber, typeof numberAsNumber); //string
console.log(numberAsString, typeof numberAsString); //number

 

날짜와 시간

  • 날짜 객체 생성
let rightNow = new Date();
console.log(rightNow);

//코드의 첫번째 줄이 실행되는 순간의 시간만 담긴다. 계속 refresh되진 않는다.

: Date객체가 가지고 있는 함수로 날짜와 시간 값을 가져올 수 있다.

let year = rightNow.getFullYear();
let month = rightNow.getMonth()+1;
//getMonth의 경우에는 현재 달 보다 1 작은 값이 반환된다.
let date = rightNow.getDate();
let day = rightNow.getDay();
let currentHour = rightNow.getHours();
let currentMin = rightNow.getMinutes();

 

getTime()

let time = rightNow.getTime();
console.log(time); //1587600222925

: 날짜의 밀리초 표현을 반환할 수 있다. 기준이 되는 일자는 1970년 1월 1일을 기준으로 time의 값만큼 지났다는 것. 비교 연산자를 통해 언제가 더 과거인지 판단 가능하다. 값이 더 작을수록 과거에 해당된다. 

 

[Javascript] Date 객체로 원하는 날짜, 시간 표현하기

지난번에는 Javascript에서 Date 객체를 활용하여 현재 날짜와 시간을 가져오는 방법을 알아보았습니다. [Javascript] 현재 날짜, 시간 구하기 이번에는 Date 객체로 원하는 날짜와 시간을 표현하는 방법을 알아보..

hianna.tistory.com

 

 

Number관련 함수

Math객체 사용

  • Math.round() : 반올림
  • Math.ceil() : 무조건 올림
  • Math.floor() : 무조건 내림
  • Math.pow(num1, num2) : num1의 값에 num2만큼 제곱 
 

JavaScript Math Object

JavaScript Math Object The JavaScript Math object allows you to perform mathematical tasks on numbers. Example Math.PI;            // returns 3.141592653589793 Try it Yourself » Math.round() Math.round(x) returns the value of x rounded to its nearest integ

www.w3schools.com

 

난수 

: 특정 입력이나 조건에 따라 무작위로 선택된 것 처럼 보이는 것. 무작위로 만들어진 수열
Math.random()은 0.673172894273546와 같은 0 이상 1 미만의 구간에서 근사적으로 균일한 부동소숫점 소수값만 뱉어냄

//랜덤함수 구하는 법
var randomNumber = Math.random();
console.log(Math.floor(randomNumber*10));

//randomNumber*10 의 값은 1의 자리수에 엄청 긴 소수자리
//floor() 소수자리는 다 버리도록 내림함수를 사용하여 0~10 사이의 랜덤수
//최소(min), 최대값(max)을 받아 그 사이의 랜덤수를 return
//random() 정확한 정수(2)가 아닌 소수값(1.9999)을 뱉어냄

function getRandomNumber(min, max) {
    return Math.random() * (max - min) + min;
//0과 1을 원하지 않으니까 최소값 +min
//최소값만 뽑고싶을 때 
}

function getRandomNumber(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
//+1을 해줘서 최대값과 최소값 모두 포함

let myMin = Math.random();
let myMax = Math.random();
getRandomNumber (myMin, myMax);



min = Math.ceil(min); 
max = Math.floor(max);
 

JavaScript Random

JavaScript Random Math.random() Math.random() returns a random number between 0 (inclusive),  and 1 (exclusive): Example Math.random();              // returns a random number Try it Yourself » Math.random() always returns a number lower than 1. JavaScript

www.w3schools.com

 

Generating random whole numbers in JavaScript in a specific range?

How can I generate random whole numbers between two specified variables in JavaScript, e.g. x = 4 and y = 8 would output any of 4, 5, 6, 7, 8?

stackoverflow.com

 

Math.random()

Math.random() 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용되는 초기값은 구현체가 선택하며, 사용자가 선택하거나 초기화할 수 없다.

developer.mozilla.org

 

 

객체 Object

let 객체이름 = {
  property이름: property값,
  hello: 20000	
};
  • property 이름은 중복될 수 없다.
  • property이름과 property값 사이에 :(콜론)으로 구분한다.
  • property를 추가할 때는 ,(쉼표)를 붙여준다.
  • property 값에는 어느 type이나 가능하다(string, number, array, object, function..)

 

Property접근

객체이름.property이름
객체이름["property이름"]

: 마침표(.) 연산자를 사용하며, 접근하려는 객체명은 왼쪽에 프로퍼티명은 오른쪽에 위치 (객체내부에 프로퍼티가 존재하기 때문에)

 

 

댓글