18
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エニプラAdvent Calendar 2022

Day 25

Javascriptのことはじめ色々

Last updated at Posted at 2022-12-24

私が唯一書けない(?)Javascriptを学習する機会があったので、色々まとめました。
(これで側が作れないですって常套句が使えなくなりました)

型付け

Javascriptは動的型付け。また、型に一貫性を持たない(弱い型)
(個人的にはバグの温床になるから嫌いな仕様です)

静的型付け
let qiita = "qiita";
// ⇒実行時にString型で判断される

qiita = 100;
// ⇒代入可能

Javaなどの静的型付けとは挙動が異なる。

動的型付け
char qiita;
qiita = "qiita";
// ⇒記載した地点でChar型

qiita = 100;
// ⇒エラーで代入不可

変数と定数の宣言

constとletで宣言

const qiita = "qiita"; // 定数
let qiita = "qiita"; // 変数

演算子

至って普通です。

const num1 = 1;
const num2 = 2;
const num3 = 3;

// 四則演算
console.log(num1 + num2);
console.log(num1 - num2);
console.log(num1 * num2);
console.log(num1 / num2);

// 余りと累乗
console.log(num1 % num2);
console.log(num1 ** num2);

// 計算の優先度も普通
console.log(num1 + num2 * num3);
console.log((num1 + num2) * num3);

イベント処理(クリック / WEBページが読み込まれた 等)

対象要素.addEventListener(種類, 関数, イベント伝播)
// イベント伝播はデフォルトでfalse
イベント処理
function hoge() {
    // 処理
}

// クリックイベントが発火した時に関数を呼び出す
addButton.addEventListener("click", hoge);

以下はNG。
(今はとりあえず理屈は置いておきます)

NG
function hoge() {
    // 処理
}

function fuga(num1) {
    // 処理
}

addButton.addEventListener("click", hoge());
addButton.addEventListener("click", fuga(aaa));

型の色々

型の確認

const num = 0;
console.log(typeof num);

型変換

string -> num
const str = "0";
console.log(typeof str)
console.log(typeof parseInt(str));
num -> string
const num = 0;
console.log(typeof num)
console.log(typeof num.toString());

Array型

(細かいArrayの操作は置いておきます)

Array
let array = [];
array.push("hoge"); // 要素の追加
console.log(array);

Object型

Object
const object = {
    name: "John",
    age: 30
};

console.log("object: ", object);

// オブジェクトの要素取得はどちらの記載でもOK
console.log("name: ", object.name);
console.log("age: ", object["age"]);

スプレッド構文 / レスト構文

スプレッド構文
const array1 = [1, 2];
const array2 = [3, 4];
const log = [...array1, ...array2];

// 配列の中身が展開される
console.log(log); // [1, 2, 3, 4]
レスト構文
const array3 = [1, 2, 3, 4, 5];
const [x, y, ...z] = array3;

// x, yには配列の要素が分割代入される
// zには残った配列が代入される
console.log(x, y, z); // 1 2  [3, 4, 5]

高階関数

高階関数 -> 関数を引数に取る関数のこと
(私のPCだと高階関数って変換が出なかったです)

filter
const words = ["a", "bbb", "ccccc"];
// filter 配列に使える高階関数
const log = words.filter(words => words.length > 4);
console.log(log) // ccccc <- 4文字以上の要素が出力される
map
const array = [1, 4, 9, 16];
// map 配列の各要素に処理を行う
const mappedArray = u.map(x => x * 2);
console.log(mappedArray) // [2, 8, 18, 32] <- それぞれの要素が2倍される

TypeScriptとJavascriptの違いで一番幸せだったところ

TypeScriptではJavascriptと違い変数に型を宣言できる。

定数
const example: string = "Hello World"

関数の引数や戻り値にも同様に型が宣言できる。

関数
const hello = (name: string): string => {
    return 'hello, ' + name
}

参考

18
5
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
18
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?