Operators,Loops
41373 ワード
OperatorとLoopsに移動する前に、vairableを説明してから入ってみましょう。
Variable read/write
メモリで読み取りと書き込みができます.たとえばlet name=karenといえば、Variableがメモリで読み書きできるため、karenをbillyに変換できます.
Constant Readのみサポート
まだあります.
メモリに値を格納する方法は2つあります.
primitive type
およびObject type
object타입
は大きすぎて、メモリが一度も上がらない.だからconst karenと宣言して、“object”を割り当てた後に、karenの指す地方は引用があります.referenceは実際にobjectを指します.したがって,referenceによりobjectを含むメモリを実際に指す.したがって、const karenと宣言すると、karenが指すポインタがロックされるため、karenは他のオブジェクトに変更できませんが、karenの名前と年齢は変更できます.これも原因の1つです.1つのプロジェクトを한 단위로, 한박스
に集中的に管理できます.Data Typeには2種類あります.
Immutable data types
: primitive types, frozen objects(i.e object.freeze())データ自体は絶対に変更できません.たとえば、「karen」という文字列自体を変更できますが、文字列内のkまたはaの同じ文字列のデータは変更できません.
Mutable data types
: all objects by default are mutable in JSobjectは、変更可能/続行可能なJavaScriptですべてのオブジェクトを変更できます.たとえばJavaScriptでは、ArrayはMutable date typeであり、他の言語では、ArrayはMutable arrayとImmutable arrayに分けられ、データ型は独立して存在する場合がある.
< Operator >
1. String concatenation
console.log('my' + 'cat'); // my cat
// + 기호를 이용해 문자열 과 문자열을 합할 수 있음
console.log('1' + 2); // 12
// 숫자가 문자열로 변환되어 합쳐질 수 있다.
console.log(`string literals: 1 + 2 = ${1 + 2}`);
// ``백틱을 이용해서 string literals를 만들 수 도 있다.
// ${} 처럼 달러기호를 사용하면 변수값을 계산해서 string에 포함해서 만들 수 있다.
// string literals 는 중간에 줄바꿈을 하거나 중간에 특수기호를 적어도
// 그대로 문자열로 변환되서 나온다.
console.log('karen's book');
// 싱글quate로 문자열을 만들게 되면 중간에 single quote나 기호가 인식이 되지 않는다.
// 그경우 \를 이용해서 기호앞에 붙여주어야 변환된다. 줄바꿈을 할 때에는 \n을 붙여준다.
// 특수문자열은 찾아서 적용하자!
2. Numberic opertaors
console.log(1 + 1); // add
+(add)、-(substract)、/(divide)、*(multiply)、%(残り)、**(指数)など3. Increment and Decrement operators
let counter = 2;
const preIncrement = ++counter;
counterという変数がある場合は、preIncrementと呼ばれる変数の前に++記号を付けます.let counter = 2;
const preIncrement = ++counter;
counter = counter + 1;
// ++counter; 와 counter = counter + 1; 은 동일하다.
// counter에 1을 더해서 다시 counter에 값을 다시 할당한 다음에
// 즉, counter의 값이 2에 1 이 증가되어서 3이 된 다음에
preIncrement = counter;
// preIncrement라는 변수에 counter의 값을 할당하는 것
逆にpostIncrement
let counter = 2;
const postIncrement = counter++;//counter変数の後に++記号を付ける場合は、まずcounter変数値を
//postIncrementに割り当てた後(1)
//つまりcounterは2から1が増えた3になります.
PostIncrementに//3を割り当て、3を割り当てます(1)
postIncrement = counter;
counter = counter + 1;
//そしてcounterの値を1(2)増やします
//つまり、3を割り当てるとcounterの値が1増加するので、4を割り当てる!
>
--기호도 똑같다 post 랑 preDecrement도 값을 하나씩 감소하는 것이다. 앞에 붙으면 바로 업데이트되서 할당이 되고, 뒤에 기호가 붙으면 할당을 해놓고 업데이트는 그 뒤에 되는 것.
***
#### 4. Assignment operators
`할당하는 operator`
>
```js
let x = 3;
let y = 4;
x += y; // x = x + y; 반복되는 x를 생략해서 코드작성이 가능
5.Comparison演算子(比較演算子)
conole.log(10 < 6); // less than
conole.log(10 <= 6); // les than or equal
conole.log(10 > 6); // greater than
conole.log(10 >= 6); // greater than or equal
***6. Logical operator : ||(or), &&(and,) !(not)
const value1 = false;
const value2 = 4 < 2;
1. ||(or) : finds the first truty valueconsole.log(`pr: ${value1 || value2 || check()}`);
function check(){
for(let i = 0; i < 10; i++){
//wasting time
console.log(':(');
}
return true;
}
value1 || value2 || check()上のvalueとexpressionのいずれかがtrueの場合、trueの演算子として演算されます.
value 1はfalseとして宣言され、value 2は4が2未満と宣言されるため、false、check関数は最終的にtrueを返し、check()は戻ります.
**重要点はor演算子がtrueが最初に発生したときに停止することです.たとえば、value 1にtrueが現れたら、「value 1の後ろに何が現れても構わない.最初にtrueが現れたからだ!」こうなると運転が止まる.演算量の大きい関数を呼び出したり、式のような子供を一番前に置いたりするのは、Junior開発者がよく非難される部分です.だから前から簡単なvalueを置いて、後ろに関数などを置いたほうがいいです!
2. && (and), finds the first falsy value
console.log(`pr: ${value1 || value2 || check()}`);
function check(){
for(let i = 0; i < 10; i++){
//wasting time
console.log(':(');
}
return true;
}
和演算子もor演算子と同じです.ただし、and演算子は、value 1、value 2、check()がtrueの場合にのみtrueを返します.and演算子も最初のvalue 1にfalseが現れると終わります「後ろを気にしない」のように、関数や式は後ろに置くべきです.3. && operator often used to compress long if-statement
nullableObject && nullableObject.something
andは、nullがnullである場合、その後ろのnullabeObjectがfalseであるため、簡単なnullabeObjectです.あることはできない.nullabeObjectがnullでない場合のみ、Objectです.何かの価値を得ることができます.
コードで表すと、
if(nullableObject != null){
nullableObject.something;
}
6. ! (not) not operator
console.log(!value1);
// not 연산자는 값을 반대로 바꾸어 준다. value1이 true이기 때문에 false로 바꿔서 변경
< Equality>
const stringFive = '5';
const numberFive = 5;
`'== loose equality'` with type conversion
// type를 변경해서 검사하기 때문에 loose equality.
const stringFive = '5';
const numberFive = 5;
console.log(stringFive == numberFive); // true
console.log(stringFive != numberFive); // false
stringfiveはstringですがstringの中の数字は5と同じですこんなもの. === strict equality, no type conversion
// type을 신경써서 type이 다르면 다르다.
const stringFive = '5';
const numberFive = 5;
console.log(stringFive === numberFive); // false 타입이 달라서 false
console.log(stringFive !== numberFive); // true
常に厳格な平等を使用したほうがいい.//object equality by reference
objectの勉強に注意してください.objectはメモリに格納するグループリファレンス形式で格納されます.
billy1 ->(X) ref1
- name - ellie
- age - 23
billy3 ->(X) ref1
billy2 ->(X) ref2
- name - ellie
- age - 22
const billy1 = {name: 'billy'};
// billy1과 billy2는 똑같은 데이터가 들어있지만, 실제로 메모리에는 각각 다른 reference가 들어있고, 그 reference들은 서로 다른 object를 가리키고 있다. billy3은 billy1이 똑같은 reference를 가지고 있으니까 billy1가 같은 reference를 가지고 있다.
const billy2 = {name: 'billy'};
const billy3 = billy1;
console.log(billy1 == billy2); // false 각각 다른 reference가 저장되어있어서 false
console.log(billy1 === billy2); // false 똑같든 아니들 둘다 reference가 달라서 false
console.log(billy1 === billy3); // true ellie1이 가지고 있는 reference를 3으로 할당했기 때문에 true이다
//equality-困惑テキスト
console.log(0 == false); // true 0,null,undefined,''는 false값 이므로 true
console.log(0 === false); // false 0은 Boolean타입이 아니므로 type이 맞지 않아서 false
console.log('' == false); // true
console.log('' === false); // false empty string은 Boolean타입이 아니어서
console.log(null == undefined); // true null과 undefined가 같은것으로 간주되지만
console.log(null === undefined); // false null과 undefined는 타입이 서로 다르므로 false
``` >
8.従来のオペレータ:if文
if, else if, else
const name = 'ellen';
if(name === 'ellen'){
// if의 statement가 true이면 그 밑에 있는
//console.log가 실행된다.
console.log('Welcome, Ellen!');
} else if(name === 'coder'){
//name이 ellen이 아니고 coder라면
//if를 넘어와서 else if안에 있는 {}이 실행된다.
// 즉 'You are amazing coder'가 실행되는 것
console.log('You are amazing coder');
} else {
// name이 랜덤한 이름이 들어가게 되면, if문도 패스,
//else if (name === 'coder')도 패스하고
//else로 넘어와서 else가 실행된다.
console.log('unknown');
}
9. Ternary operator: ?
Ternary演算子はifをもっと簡単に書くことができます.
//condition ? value1 : value2;
console.log(name === 'ellie' ? 'yes' : 'no'); // statement 즉 'name === 'ellie'에 ?를 붙이면
// statement가 true니? true면 'yes'를 실행하고
// 아니면 : 다음에 오는 것을 실행하는 것. 즉 'no'를 실행
// Ternary operator는 값을 할당하거나 간단하게 출력할때
// 사용하는 것이 좋다.
// 계속 묶어서 쓰면 가독성이 낮아지기 때문에 간단할때만 사용
10. Switch statement
use for multiple if checks
use for enum-like vlaue check
use for multiple type checks in TS
const browser = 'IE';
switch(browser){
// switch 안에 있는 값 즉,browser가 IE이면,
case 'IE': // 'go away'를 실행하게 된 후,
console.log('go away!');
break; // 멈춘다.
case 'Chrome':
// chrome과 firefox가 출력하는 값이 같으므로
// case 'Chrome': 밑에 연달아서
// case 'Firefow':를 붙여도 된다.
console.log('love you!');
break;
case 'Firefox':
console.log('love you!');
break;
default:
console.log('same all!');
break;
}
ifで複数繰り返し実行する場合は、switchを使用することを考慮したほうがよい.タイプスクリプトで、指定したタイプまたはenumのような子供をチェックする場合は、switchを使用することが望ましい.11. Loops
1. while loop
while loop, while the condition is truthy, body code is executed.
let i = 3;
while(i > 0){
// while 같은 경우는 statement인 i > 0 이
// false로 나오기 전까지는 무한대로 console을 출력한다.
console.log(`while: ${i}`);
i--;
}
2. do-while loop
do while loop, body code is executed first, then check the condition
let i = 3;
while(i > 0){
console.log(`while: ${i}`);
i--;
}
do{
// do의 {}을 먼저 실행한 다음에
// while의 조건이 맞는지 아닌지를 검사한다.
// while을 실해하고 난 후, i = 0 이어도,
// {}안의 내용을 먼저 실행해서,
// do while: 0을 먼저 출력이 되고 나서
// i 가 0보다 큰지 검사하고 멈추게 되는것.
console.log(`do while: ${i}`);
i--;
} while (i > 0);
blockを先に実行するにはdo while文が必要です.条件文が正しいときにblockを実行したい場合はwhile文を使用します.3. for loop, for(begin; condition; step)
for(i = 3; i > 0; i--){
// begin부분은 딱 한번만 작동이 된다.
// 그다음 {}을 실행하기 전에 condition이 맞는지 아닌지
// 검사한 후에 {}이 다 실행되면 step을 실행하게 된다.
// 그래서 condition과 step이 condition의 조건이
// 틀릴 때까지 계속 돌게된다.
console.log(`for: ${i}`);
}
for(let i = 3; i > 0; i = i - 2){
// for문 안에서 let이라는 지역변수를 선언해서
// inline declaration을 하기도 한다.
// inline variable declaration
console.log(`inline variable for: ${i}`);
}
4.ネストされたループ//for文にfor文を作成する
whileやforなどは互いにネストすることができます.ただしネストで記述する場合は,0がnの2勝であることを避けることが望ましい.
for(let i = 0; i < 10; i++){ // 먼저 i가 0일때
for(let j = 0; j < 10; j++){ // j를 0-9까지 삥삥돌리고 그다음 i = 1 일때 j를 0-9까지 돌리고는 반복해서 i가 9일때 까지 반복한다. 그렇지만 자주 쓰는 것은 권하지 않는다.
console.log(`i: ${1}, j:${j}`);
}
}
12. break, continue
01. iterate from 0 to 10 and print only even numbers(use continue)
for(i = 0; i < 11; i++){
if(i % 2 !== 0){
continue;
}
console.log(`q1. ${1}`);
}
02. iterate from 0 to 10 and print numbers until reaching 8 (use break)
for(i = 0; i > 11; i++){
if(i > 8){
break;
}
console.log(`q1. ${1}`);
}
重複文では、breakキーまたはcontinueキーを使用して重複文を終了できます.breakは完全に終了する繰り返し文で、continueは今までジャンプして次の文にジャンプすればいいです.Reference
この問題について(Operators,Loops), 我々は、より多くの情報をここで見つけました https://velog.io/@choijw1116/OperatorsLoopsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol