JavaScriptを初めて学ぶ

まずhtmlの<body>の終わりに
```html
...

<script src="~~.js"></script>
</body>
```
を書くことでJavascriptをhtmlに挿入する。

jsファイルの最初に、｀use strict;｀と書き、厳密なエラーチェックを可能にしておく。


```javascript
console.log(`Hello World`);
console.log(1+5*2-4);
```
と、いう風に、Webサイトのconsoleてところ（検証したら出てくるやつ）で文字を載せたり、演算したり。
というかまずそもそも
console.logってなにか。調べてみるとどうやら、cosole.logを実行すると、（）内をブラウザのコンソールに表示することができる、らしい。
Consoleは日本語で「慰める」、らしい。コンソールってなんだよ。

調べてみると、コンソールとは。。。
・Webブラウザなどの開発者ツールに含まれている、プログラムのデバッグやテストを支援するための機能
・プログラムが実行される際に、console.log などの命令を使って、特定の値やメッセージをコンソールに出力することができます。←ここで出力結果を確認し、正しくエラーが起きてないか確認できる
・JavaScriptのコードにエラーがないか表示もしてくれる。またどこでどんな問題が発生しているか伝えてくれるので、バグを特定し修正がしやすい
・`console.log`を使うことで、プログラムの実行中に変数の値や処理の進行状況を表示可能
・何より！JavaScriptのコードを直接入力して実行することが可能
・Webブラウザ以外でもよく使われる。コンソールはプログラム開発において非常に役立つ機能の一つで、プログラムのデバッグやテストを支援するために活用されることが多い。

といったふうに、コードに対して、お前ちゃんとやってんの？っていう優しい上司みたいな機能なのかなと。なんかこの言語がどうやって動的Webサイト作りに役立ってくのかまだよくわからんけども。

とりあえず基礎から！
・変数(let)を宣言できる
letは変数を宣言するキーワード。再代入がいくらでも可能。再宣言ができない。
```javascript
let a;   //変数aを宣言！
console.log(a);  //この時点ではまだ何もaに入っていない
a =5;    //変数5が！
console.log(a);
a =10;　//変数10が！
console.log(a); 
//  let a;　と入力しても、再宣言はNG.
```
さらに、最初から初期値を設定も
```javascript
let y=10;
console.log(y);
y =15;　　　//もちろんその後も変更できる
console.log(y);
y++; //インクリメント（１足す）。この場合、Consoleでは16が表示される

let str ="Hello World";　//変数は文字列も入るよ
console.log(str);

let i, j, k;  //さらに複数いきなり宣言も可能。
```

・定数(const)を宣言できる
constは定数を宣言するキーワード。固定されて変化しない値。再代入できない定数とも言える
```javascript
const b=1; //初期化の時に代入しないとエラーが起きる
console.log(b);

const food="オムライス";
console.log(country);
```

ていうかそもそも。。
変数とは？
値に名前をつけて一時的に入れるもの
値の変更が可能
変数a =（空）→（１２３）→（トマト）

定数とは？
変化しない値に、名前をつけて一時的に保持できる入れ物
値は変更不可
定数b=（100）

条件分岐(もし〜〜なら、〜〜する)
if(条件式){
     条件式がtrueの時に実行したい処理
else if(条件式２){
    条件式２がtrueの時に実行したい処理
}
}else{
    　条件式がfalseの時に実行したい処理
}
ちなみにelseは省略化

例えば
```javascript
const x = 10;
if(x >= 25){
    console.log('25以上の数字')
}
else if(x >= 50){
    console.log('50以上の数字')
}
else if(x >= 100){
    console.log('100以上の数字')
}
else{
    console.log('25未満の数字')
}
```
consoleでは「２５未満の数字」と表示

条件式では
==（等しい）, !=（等しくない）, ===（厳密に等しい）, !==（厳密に等しくない）, >（〜より大きい）, >=（〜以上）, <（〜より小さい）, <=（以下）
などある

＝＝と！＝＝の違いって何。と思う。
例えば
```javascript
let num = 10;
let str = '10';
if(num === str){
    console.log('等しい');
}else{
    console.log('等しくない');
}
```
consoleでは等しくない、と表示される。条件式が＝＝の場合、等しい、になる。＝＝は抽象的な比較なので、型が違っても等しい、になる。

構文switch

switch(式){
    case 値１:
        式＝＝＝値１であるときに実行したい処理を書く
    break; ここでswitch文を抜ける意味
    case 値:
        式＝＝＝値２であるときに実行したい処理を書く
    break;
    default:
        式の値が全ての値に合致しない時に、実行したい処理を書く
    break;
}

例えば
```javascript
const n = 10;
switch(n){
    case 1:
        console.log('one')
        break;  //原則各case毎にbreakを入れる
    case 10:
        console.log('ten')
        break;
    default:
        console.log('other number')
        break;
}

```

繰り返し処理
・構文for
for(初期化式;ループ継続条件式;)増滅式{
    繰り返し実行したい処理を記述
}
例えば
```javascript
for(let i=1; i<=5; i++){
    console.log(i);
}

```
そしたら、1,2,3,4,5が表示される
let i=1は３以下なので、console.log(i)が実行
そしたらi++で、i=2になる。でまたiは3以下なので・・・
と、条件が成り立たなくなるまでループする。

・構文while
while(条件式){
    条件式がtrueの時に実行したい処理
}
例えば
```javascript
let i =1;
while(i <= 5){
    console.log(i);
    i++;
}
```
そしたら、1,2,3,4,5と表示される
i=1と初期値設定。i <=5の条件が通ったので、1が出力される。そしたらi++で、iの値が2に。それを条件が成り立たなくなるまでループ。i++がないと無限ループになるので、気を付ける
for構文とほぼ同じじゃあん。。

・do while構文
do{
    条件式がtrueの時に実行したい処理
} while(条件式);

例えば
```javascript
let i = 1;
do{
    console.log(i);
    i++
} while(i <= 5);
```
そしたら、1,2,3,4,5が出力される

一番最初にconsole.log(i),１が出力される。そのあと、i++する。iが２に。そしてwhileのi<=5の条件が成り立つので、そのまま条件が成り立たなくなるまでループ


whileは条件の判断が前にあって、条件によってはループを一度もしないことも。
do whileの場合は条件の判断が後ろにあって、条件に関わらず最低一回はループする