1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モダンJavascriptを勉強したのでES5以降の記法を少しまとめた

Last updated at Posted at 2025-01-09

🚶 はじめに

最近 自己開発でReactを使い、社内システムでもReactをよく触ってますが、私自身 React...いやフロントエンド技術自体を体系的に理解できていません
なので、一旦モダンJsについて学び ES6以降の記法についてアウトプット記事を書こうと思いました

📝 ESxxについて

ES は ECMAScript の略称で、欧州電子計算機工業会(ECMA: European Computer Manufacturers Association)が標準化を進めているのでそう呼ばれているらしい。
元々は Netscape 社が開発を進めていたらしいですね。
ESは ES6(ES201)と、西暦と略された書き方の2通りがある。略称は西暦の値と1ずれているので少しわかりづらい。

🙆‍♀️ モダンJavascriptの記法をまとめてみた

書き方の変更で説明不要なところは概要を省きます
ES5以降の書き方全ては紹介していません

const let 宣言

説明

var -> let -> const の順に制約が厳しくなる
var : 再宣言・変数の上書きが可能
let : 再宣言は不可能。変数の上書きは可能
const : 再宣言・変数の上書きが不可能。(オブジェクトや配列であれば再定義可能)

コード

var,let,const の 再宣言・変数の上書き

var val1 = "vars"
console.log(val1);

val1 = "var2"; // var変数は値の上書きが可能な変数である
console.log(val1);

var val1 = "re:var"// 再定義が可能である
console.log(val1);

let var2 = "lets"
console.log(var2)

var2 = "let2" // 上書き可能な変数
console.log(var2)

// let var2="let3"// 再宣言は不可能 ERROR
// console.log(var2)

const var3 = "consts"; //プリミティブ
console.log(var3);

// var3 = "var3"; // ERROR, readonlyによるエラー
// console.log(var3)

// const var3 = "var4"; // ERROR

constのオブジェクト値の上書き・配列の値上書き

const var4 = {
    name: "hoge",
    age: 31
}
console.log(var4)

var4.name = "hogehoge"
console.log(var4)

var4.address = "Fukushima"
console.log(var4)



// 配列についても中身を変更可能になる
const var5 = ["dog","cat"];
console.log(var5);

var5[0] = "bird";
console.log(var5);

var5.push("monkey")
console.log(var5);

テンプレート文字列

概要

従来の文字列の結合 ("a"+"a") の方法から一新された書き方ができるようになった

コード

/**
 * テンプレート文字列
 * */
const name="hoge";
const age = 12;

// old
const messageOld = "Old MyName is " + name + ". age is " + age;
console.log(messageOld);

// ES5 Template 文字列
const messageNew = `New MyName is ${name}. age is ${age}`;
console.log(messageNew);

アロー関数

コード

従来の書き方 と アロー関数の書き方を比較

/**
 * アロー関数
 * */

// 従来の関数
function old(str){
    return str;
}

const funcOld = function(str){
    return str;
}

console.log(old("old function"));
console.log(funcOld("funcOld"));

引数を省略した書き方。 returnも省略可能

/**
 * 引数が1つの場合は () を省略できる
 * */
const newFunc = (str) => {
    return str;
}

const newLittleArgFunc = str => {
    return str;
}

// return と {} を省略
const newLittleReturnFunc = str => str;

console.log(newFunc("newFunc"));
console.log(newLittleArgFunc("newLittleArgFunc"));
console.log(newLittleReturnFunc("newLittleReturnFunc"));

// 計算するやつ
const sumCalcFunc = (num1,num2) => num1 + num2;
const calc = sumCalcFunc(1,4);
console.log(`sum: ${calc}`);

分割代入

概要

オブジェクトの要素(キー)名を指定することで、変数に値を代入できる
hoge.key , hoge.name と冗長になっていた書き方を短縮できる

コード

オブジェクトの分割代入

/**
 * 分割代入
 * */
const myProfile = {
    myname : "hoge",
    myage : 12
};

//従来のフル指定していた書き方
const messagePro = `myname : ${myProfile.myname}, myage: ${myProfile.myage}`;
console.log(messagePro);

//分割代入
const {myname, myage} = myProfile;
const messagePro2 = `myname2 : ${myname}, myage2: ${myage}`;
console.log(messagePro2);

配列の分割代入

// 従来の書き方
const myProArray = ["hoge",21];
const oldMyProArrayMessage = `oldMyProArrayMessage >>> myName : ${myProArray[0]} , myAge: ${myProArray[1]}`;
console.log(oldMyProArrayMessage)

// 要素数を変数に割り当てる
const [arrayName,arrayAge] = myProArray;
const myProArrayMessage = `myProArrayMessage >>> name: ${arrayName} , arrayAge: ${arrayAge}`;
console.log(myProArrayMessage);

デフォルト値

コード

/**
 * デフォルト値 (引数, 分割代入) << で使う
 * 何もstrに入っていないと => undefined を返す => デフォルト値を設定しておく (Guest)
 * */

const sayHello = (sayHelloStr = "Guest") => {console.log(`こんにちは ${sayHelloStr} さん`)};
sayHello();
sayHello("Har");

const {gender="not setting"} = myProfile;
// myageはコード上部で取得しているので省略
console.log(`${myage}歳 で genderは ${gender}です`);

スプレッド構文

概要

... を用いて配列を展開する
値の参照(ディープコピー)ではなく、コピーができる(参照もと変数の値を変えても参照先の値は変わらない値渡し)
配列の結合にも使える

コード


/**
 * スプレッド構文 ...
 * */

//配列の展開
const arrayA = [1,2];
console.log(arrayA); //配列で返る
console.log(...arrayA); //数値で返る
console.log( sumCalcFunc(arrayA[0],arrayA[1]) );
console.log( sumCalcFunc(...arrayA) ); //配列を展開して値を渡す.(3つの要素でも2番目までを参照される)

//分割代入で取得する
const arrayB = [1,2,3,4,5];
const [num1,num2,...arrayC] = arrayB;
console.log(num1);
console.log(num2);
console.log(arrayC); //配列型で 3~5が取得できる

//配列のコピー
const arrayD = [6,7];
const arrayE = [8,9];
const arrayF = [...arrayD];
console.log(arrayF); //配列の結合 [6,7]
const arrayG = [...arrayD, ...arrayE];
console.log(arrayG); //配列の結合 [6,7,8,9]
const arrayH = arrayD; //参照コピー
arrayH[0] = 1;
console.log(`arrayH: ${arrayH} & arrayD: ${arrayD}`) //arrayDにも同様の変更が加えられている。同じメモリを見てる

Map Filterを使った配列処理

概要

  • Map
    • 配列内の値に対して処理ができる。indexの引数を持つことで処理している配列数を取得できる
  • Filter
    • 条件に一致する値のみを返す

コード


/**
 * map や filterを使った配列処理
 * */
const nameArr = ["hoge","fuga","jake"];
for(let index=0; index<nameArr.length; index++){
    console.log(nameArr[index]);
    console.log(`${index}番目は${nameArr[index]}です`);
}

//2番目の引数に配列数が入ってくるしよう
nameArr.map((name, index) => {
    console.log(`map : ${index}番目は${nameArr[index]}です`);
})

//同じ処理をmapでやる
//returnすると新しい配列を作れる
const nameArrB = nameArr.map((name) => {
    return name;
})
console.log(nameArrB);

const nameArrC = nameArr.map((name) => {
    return name === "jake" ? name : `${name}さん`;
});
console.log(nameArrC);

//条件でtrueの場合のみ値を返す
const numArray = [1,2,3,4,5]
const numArrayOdd = numArray.filter((num) => {
    return num % 2 === 1;
})
console.log(numArrayOdd);

三項演算子

コード

const val = 0 < 1 ? "true" : "false";
console.log(`結果は${val}です`)

const sankoNum = 1300;
const formatedSankoNum = typeof sankoNum === 'number' ? sankoNum.toLocaleString() : "数値を入力して";
console.log(formatedSankoNum);

const sankoCheckSum = (num1,num2) => {
    return num1 + num2 > 100 ? "100超え" : "許容範囲内" ;
}
console.log(sankoCheckSum(30,30))
console.log(sankoCheckSum(50,52))

📣 感想

改めてモダンJavascriptを学びなすことで、Reactを使う際にコードをメチャクチャ読みやすくなった👏
また、古い記述方式であるかどうかの判断がつくようになったので、社内システムや自己システムでリファクタリングしていきたい🚀
次はReactについて学習してく

📖 参考

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?