Language/JavaScript

JS 파이썬처럼 이해하기

청렴결백한 만능 재주꾼 2020. 6. 24. 13:42
반응형

**자바스크립트에서는 배열이 파이썬의 리스트같은 것. '[]' 대괄호로 감싼다.


function getName(name) {

return name + '님';  
}

const result1 = getName('개발자');  
const result2 = getName('디자이너');  
const result3 = getName('기획자');

console.log(result1)

console.log(result2)

console.log(result3)
def getname(name):



return name+'님'

result1 = getname('개발자')

result2 = getname('디자이너')

result3 = getname('기획자')

result1

result2

result3

JS에서는 return을 해주지 않으면 결과가 없는게 아니고 undefined라고 뜸.

let num = 1;

let newNum = num++;

num=1

newnum = num

num+=num

let num = 1;

let newNum = ++num;

num=1

newnum=num

newnum += num

!!밑에 2+2를 감싸고 있는 괄호를 없애면 2들을 스트링으로 인식하여 출력이 22로 됨.

function textConcatenation() {
let text = "2 더하기 2는 " +(2 + 2);
return text;
}


def textconcatenation():

   return "2더하기 2는 "+str(2+2))

컬러명을 변수로 받고 조건에 따른 반응들 정의

function myFavoriteColor(color) {

if (color=="navy") {
return "Good!"

} else if (color=="yellow") {
return "Bad!"
} else {
return "Whatever!"
}
}


def myfavoritecolor(color):
   if color == "navy":

        return "Good!"

  elif color == "yellow"

        return "Bad!"

  else:

        return "Whatever!"

---

<table style="border-collapse: collapse; width: 100%;" border="1"><tbody><tr><td style="width: 33.3333%;">비교연산자,논리연산자</td><td style="width: 33.3333%;">자바스크립트</td><td style="width: 33.3333%;">파이썬</td></tr><tr><td style="width: 33.3333%;">같다</td><td style="width: 33.3333%;">===,==(2개짜리는 느슨한 동등비교,type상관안함)</td><td style="width: 33.3333%;">==</td></tr><tr><td style="width: 33.3333%;">다르다</td><td style="width: 33.3333%;">!==</td><td style="width: 33.3333%;">!=</td></tr><tr><td style="width: 33.3333%;">또는</td><td style="width: 33.3333%;">&nbsp;||</td><td style="width: 33.3333%;">or</td></tr><tr><td style="width: 33.3333%;">그리고</td><td style="width: 33.3333%;">&amp;&amp;</td><td style="width: 33.3333%;">and</td></tr></tbody></table>

---

if문 과 비교연산자를 쓰기
```javascript
function canIDrinkSoju(age) {  
if (age<20){  
return "애야 가서 공부나 해라!"  
} elif (age>50){  
return "건강을 위해서 술은 적당히 마시세요!"  
} else{  
return "소주에는 곱창 어떠신가요?"  
}

}

def canidrinksoju(age):


  if age<20:

        return "애야 가서 공부나 해라^^"

  elif age>50:

        return "건강을 위해서 술 줄이세요"

  else:

        return "소주에는 곱창 어떠신가요?"

#가위바위보를 구현해봄. 비기는경우는 무조건 플레이어1을 리턴시킴. 나머지경우 이기는사람 리턴.

function rockPaperScissors(player1, player2) {  
if((player1 ==="가위" &&player2==="보")||(player1==="바위"&&player2==="가위")||(player1==="바위"&&player2==="가위")){  
return "player1"}  
else if ((  
player1 ==="가위"&&player2==="바위")||(player1 ==="바위" &&player2==="보")||(player1 ==="보" &&player2==="가위"))  
{  
return "player2"  
} else{  
return "player1"  
}  
}

함수 구현하는 것은 function으로 하고 parameter는 얼마든지 괄호안에 넣어주면 됨. 그리고 {}안에 모든 것을 넣어줌.


배열은 대괄호([])에 감싸져 있다.

var cities = ["서울","울산","대구"]

서울, 울산, 대구는 Element(요소)라 부른다.

인덱싱은 파이썬과 같다.

0부터 시작

[0] 이렇게 호출


for문

for (반복조건) { //반복조건이 맞으면 실행할 코드 }

예)

let count = 1;

for (let i = 0; i <= 5; i++) {

count = count + 1;

}

findSmallestElement 함수를 구현해 주세요.
findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 array 입니다.
array 의 값들 중 가장 작은 값을 리턴해주세요.

function findSmallestElement(arr) {
  // your code here
  if (arr.length === 0) {
    return 0;
  }

  let result = arr[0];

  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < result) {
      result = arr[i];
    }
  }

  return result;
}

Array에 사용할 수 있는 함수
Push와 unshift
요소를 추가하는 함수

push는 꼬리에 요소를 추가
unshift는 머리부분에 요소를 추가

pop - 마지막 요소가 제거

문제
divideArrayInHalf 함수를 다음과 같이 구현해주세요.

divideArrayInHalf 함수의 인자인 array는 숫자 값으로만 구성되어 있으며 정확히 총 5개의 요소(element)로 구성되어 있습니다.

array의 요소들 중 10과 같거나 작은 값의 element들은 result의 맨 앞으로,
10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴해주세요.

  • 중요사항
    이때, 순서는 array의 맨 뒤의 요소 부터 맨 앞의 요소까지 순차적으로 이루어저야 합니다.
function divideArrayInHalf(array) {
  let result = [];
  let len = array.length-1
  for (let i=len; i>=0; i--){
    let x = array[i];
    if (x>10){
    result.push(x)
  }else {
    result.unshift(x)
  }
  }
  return result;
}

데이터 타입 확인
typeof <데이터>

자바스크립트에서
True를 반환 하는 경우
문자열: 비어있지 않은 모든 문자열
숫자 : 0이 아닌 모든 숫자
객체 : 모든 객체 ({},[] 모두 포함)

false로 변환되는 값
문자열 : 빈문자열("")
숫자 : 0, NaN
객체 : null
undefined

let upperLastName = lastName.toUpperCase();
let lowerLastName = lastName.toLowerCase();
소문자,대문자로 바꿔주는 함수

.indexOf("바보");
하면 단어가 들어있나 찾아줌.

..slice(0, firstChar)
slice(잘릴 시작위치, 잘릴 끝위치)

자바스크립트 언어의 특징 중 하나가 데이터 타입을 신경쓰지 않는다는 것입니다.
이 점은 양날의 검이라고 할 수 있겠습니다.

console.log(2019+"2000");
console.log(2019-"2000");
컴퓨터가 +의 양쪽을 보고, 하나라도 String이 있으면
문자열로서 합쳐줍니다.

let rightNow = new Date();  
let year = rightNow.getFullYear();  
let month = rightNow.getMonth()+1;  
let date = rightNow.getDate();  
let day = rightNow.getDay();  
let currentHour = rightNow.getHours();  
let currentMin = rightNow.getMinutes();

그런데 -라면, String의 마이너스는 존재 하지 않으므로
양쪽의 값을 모두 숫자로 변환해서 계산해줍니다.

  • 이렇게 클래스 내에서 name, price와 같이 변경 가능한 상태값이자 class내의 컨텍스트에서 어느 곳에서나 사용할 수 있는 변수를 '멤버 변수'라고 부릅니다.

  • 멤버 변수는 'this' 키워드로 접근합니다.

인스턴스는 Class 이름에 new를 붙여서 생성합니다.


ES5에서 ES6로 넘어오면서 함수 문법이 조금 바뀌었다. 둘다 사용 가능하다.

function이 빠지고 parameter를 '='으로 구분하여 쓴다. 그리고 함수의 로직은 화살표 뒤에 {}안에 들어간다.

만약 인자가 있다면,


const hamSu = parameter => {

return parameter + "매개변수"}

위와 같이 쓸 수 있다. 파라미터가 한개라서 소괄호를 안했지만 한개 이상이라면 ()로 묶어주어야 한다.


그리고 ES6로 넘어오면서 스트링을 담는 법이 새로 생겼다.

'1' 옆에 있는 ' `' 백틱이라고 하는데 이걸로 스트링을 감싸면 그대로 가져올 수 있다.


let life = '인생';

let hoho = \`내가

말했지

${life}은

아름답다고\`;

새로이 추가된 3가지 편한 기능

  • startsWith

  • endsWith

  • includes

indexOf와 같이 문자열을 찾는 것인데 조건검색같은 느낌.


let life = '인생은 아름답다.'

console.log(life.startsWith('인생은');

console.log(life.endsWith('다.');

console.log(life.includes('아름');

이렇게 하면 다 true로 나온다.


map은 똑같은 것 같다.


let arr = \[1,2,3,4,5,6,7\]

const func = (x)=>{

return x\*x

}

let testmap = arr.map(func)

여기 예제에서는 그냥 포문인 것 같은데.

/>><배열>.map(함수)



const keys = Object.keys(obj) // \['name', 'weight', 'price', 'isFresh'\]

for (let i = 0; i < keys.length; i++) {

const key = keys\[i\] // 각각의 키

const value = obj\[key\] // 각각의 키에 해당하는 각각의 값

console.log(value)

}

Object.keys(obj) -> 키들을 배열로 묶어서 가져옴.

Object.values

Object.entries

그리고 ES6오면서 포문을 작성하는데에 변화가 있었다고 한다.

기존 포문


for (let i=0 ; i<10;i++){

console.log('i')

}

바뀐 것


for (let i in \[0,1,2,3,4,5,6,7\]){

console.log(i)

}
반응형