LoginSignup
0
0

More than 1 year has passed since last update.

プログラミングノート(モダンJavaScript)

Last updated at Posted at 2022-04-12

はじめに

Udemyの【世界で7万人が受講】Understanding TypeScript 日本語版を参考に一部JavaScriptを学習したので、プログラミングノート(カンペ用ノート)をします。

letとvar

letを使うべき(ベストは全部const)

// varはグローバルスコープまたは関数スコープ
function add(a: number, b: number) {
  var result; // これは関数スコープ
  result = a + b;
  return result;
}

if (age >= 20) {
  var isAdult = true; // これはグローバルスコープ
}
console.log(isAdult); // undefined

// letはブロックスコープ
if (age >= 20) {
  let isAdult = true; // ブロックスコープ
}
console.log(isAdult); // エラーになる

※以前記載の誤りを指摘いただいていましたが、下書きに戻せなかったので、一旦削除して修正後再投稿しました。
 ご指摘いただいた方ありがとうございました。

アロー関数

基本的なアロー関数

const add1 = (a: number, b: number) => {
  return a + b;
};
console.log(add1(2, 5));

右側の中括弧に式が一つの場合は省略可能

const add2 = (a: number, b: number) => a + b;
console.log(add2(2, 5));

パラメータが一つの場合は左の()が不要

const printOutput: (output: string | number) => void = output => {
  console.log(output);
};
printOutput(add1(2, 5));

※ 「string|number型の引数とvoidの戻り値を定義した関数型」という型定義を最初に入れている

デフォルト値

一番右の引数だけ設定が可能。

const add = (a: number, b: number = 1) => {
  return a + b;
};
console.log(add(2));

スプレッド演算子

const hobbies = ["Sports", "Cooking"];
const activeHobbies = ["Hiking", ...hobbies]; 
activeHobbies.push(...hobbies); 

(おまけ)アドレス渡しと値渡し

const person = {
  name: "Max",
  age: 30,
};

const copiedPerson_address = person; // アドレス渡し。値はコピーしていない。
const copiedPerson_value = {
  ...person,
}; //値渡し

レストパラメータ

任意の数を受け取る

const add3 = (...numbers: number[]) => {
  return numbers.reduce((curResult, curValue) => {
    return curResult + curValue;
  }, 0);
};
const addedNumbers = add3(5, 10, 2, 3.7);
console.log(addedNumbers);

分割代入

配列やオブジェクトを分割して取り出す

const hobbies = ["Sports", "Cooking"];
const activeHobbies = ["Hiking", ...hobbies];

const [hobby1, hobby2, ...remainingHobbies] = hobbies;

オブジェクトの場合

const person = {
  firstName: "Max",
  age: 30,
};

const { firstName: userName, age } = person; //キーをuserNameで上書き 
0
0
0

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
0
0