javascript基本文法

# 文字の連結
```js
console.log(3+5);              //8が出力される。
console.log("3"+"5");          //35が出力される +の時のみ""で囲った数値は文字列として扱われる。 
console.log(parseInt("3",10)+5);  //8が出力される。 parseIntで文字列3を10進数の3に変換する。
```

# 文字の中にtabと改行を入れる
```js
// \nで改行 \tでtabを入れる 
console.log("Hello\n\tworld!");
//出力結果 
//Hello
//    world! 
```

# 変数の定義
```js
let name = "にんじゃ";
```

# 定数の定義
```js
const name = "にんじゃ";
```

# テンプレートリテラル
```js
const name = "にんじゃ";
console.log(`こんにちは、${name}さん`);   //バッククォートで囲む 
```
# 等価演算子
```js
a==b    //aとbが等しい
a!=b    //aとbが異なる
```
# 厳密等価演算子
```js
a===b   //aとbが厳密に等しい
a!==b   //aとbが厳密に異なる
```
# and / or
```js
&&    //かつ
||    //　または
```
# +1 / -1
```js
price++    //price+1 または price = price+1ど同じ
price--    //price-1 または price = price-1ど同じ
```
# if文
```js
const number = 7;

//通常の書き方
if(number>10){
    console.log("numberは10より大きいです");
}else if(number>5){
    console.log("numberは5より大きいです");
}else{
    console.log("numberは5以下です");
}
```

# switch文
```js
const n = 4;

switch (n) {
  case 1:
    console.log("大吉です");
    break;

  case 2:
    console.log("吉です");
    break;

  case 3:
    console.log("小吉です");
    break;

  default:
    console.log("凶です");
    break;
}
```

# while文
```js
let number = 1;

while(number<=100){
  console.log(number);
  number+=1;
}

//１回はwhileの中を実行したい場合はdo whileを使う。
let number = -50
do {
  console.log(number);
  number-=15;
}while(number>0)
```
# for文
```js
for(let number=1; number<=100; number++){
  console.log(number);
}
```

# 配列
``` js
//基本の形
const animals = ["dog","cat","sheep"];
//呼び出し
console.log(animals);
console.log(animals[2]);

//更新
animals[2]="rabbit";
console.log(animals[2]);

//for文
const animals = ["dog", "cat", "sheep", "rabbit", "monkey", "tiger", "bear", "elephant"];
for (let i = 0; i < animals.length; i++) {
  console.log(animals[i]);
}
```
# オブジェクト
```js
//基本の形
const item ={name: "手裏剣", price: 300};   //値の代入で終わっているので;で終わらせる。
//呼び出し
console.log(item.name);
console.log(item["name"]);   //変数でアクセスする場合使用
//出力結果
//手裏剣
//手裏剣

//配列
const characters = [
  {name: "にんじゃ", age: 14},
  {name: "ひつじ", age: 1000}
];
//呼び出し
console.log(characters[0]);
console.log(characters[1].name);

//アロー関数
const animal = {
  name: "レオ",
  age: 3,
  greet: ()=>{
    console.log("こんにちは");
  }
}
//呼び出し
animal.greet();
```


# 関数
```js
const greet = function() {
  console.log("こんにちは！");
};
//呼び出し
greet();         
```
# アロー関数
```js
const greet = ()=>{
  console.log("こんにちは！");
};

//呼び出し
greet();
```
### アロー関数(略記)
```js
const double = a => a*2;
console.log(double(12));
//出力結果
//24
```

# クラス
```js
class Animal {
  constructor(name,age) {
    this.name = name;
    this.age = age;
  }
}
//呼び出し
const animal = new Animal("モカ",8);

console.log(`名前: ${animal.name}`);
console.log(`年齢: ${animal.age}`);

```

### クラス(メソッドを含む) 
```js
class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  //greetメソッド
  greet() {
    console.log("こんにちは");
  }

  //infoメソッド
  info() {
    this.greet();    
    console.log(`名前は${this.name}です`);
    console.log(`${this.age}歳です`);
  }
}

const animal = new Animal("レオ", 3);
animal.info();
```

###  クラスの継承
```js
class Dog extends Animal {
}
```
### コンストラクタのオーバーライド
```js
class Dog extends Animal {
  constructor(name, age, breed){
      super(name, age);
      this.breed = breed;
  }
```

#  分割代入
```js
//オブジェクトの場合
const myProfile = {
  name: "太郎",
  age: 20
};

const { name, age } = myProfile;   //myProfileオブジェクトをname,ageに分割代入して使用する。 
const message1 = `名前は${name}です。年齢は${age}歳です`;
console.log(message1);

//配列の場合
const myProfile =["太郎",20];

const [name, age] = myProfile;
const message2 = `名前は${name}です。年齢は${age}です`;
console.log(message2);
```

# スプレッド構文
主に配列に使用される
```js
//配列の値を分割する場合
const arr1 = [1, 2];
const sumFunc = (num1, num2) => console.log(num1 + num2);
sumFunc(...arr1);  //配列を展開して引数に充てる
//出力結果
//3

//配列をまとめる場合
const arr2 = [1,2,3,4];
const [num1,num2,...arr3] = arr2;
console.log(arr3);
//出力結果
//[3,4]

//配列をコピーする場合
const arr4 = [1, 2];
const arr5 = [3, 4];
const arr6 = [...arr4]; //参照を引き継がずにコピーできる
console.log(arr6);
//出力結果
//[1,2]

//配列を結合する場合
const arr7 = [...arr4, ...arr5];
console.log(arr7);
//出力結果
//[1,2,3,4]

```


# エクスポート/インポート
## ファイルのエクスポート/インポート
animal.js
```js
class Animal{
}
export default Animal;
```
dog.js

```js
import Animal from "./animal";
.
.
```

### 名前付きエクスポート/インポート
dogData.js
```js
const dog1 = new Dog("レオ",4,"チワワ");
export{dog1,dog2};
```
script.js

```js
import{dog1,dog2} from ".dogData";
dog1.info();
```

### パッケージのエクスポート/インポート
```js
import 定数名 from "パッケージ名"; 

ex)
import readlineSync from "readline-sync";

const name = readlineSync.question("名前を入力してください:");
const age = readlineSync.questionInt("年齢を入力してください:");

console.log(`${name}と入力されました`);
console.log(`${age}と入力されました`);
```

# コメントアウトの方法
VS codeの場合、command + /　でコメントアウト可能  
```
１行だけコメントアウト
//
複数行のコメントアウト
/*
*/
```