半歩ずつでも前に進めば変わっていく

Kozue Blog

プログラミング 学習 記録

プログラミングで月収5万円になるまでの記録58日目

更新日:

こんにちは、こずえです。
プログラミング学習記録58日目です。
JavaScriptについて学習しました。

所感:記事にまとめるのに1, 2時間くらい掛かりました(´ー`)

合計学習時間

前回までの時間:114.00[h]
今回の時間:2.75[h]
合計時間:116.75[h]

学習内容

JavaScript

以下のサイトが網羅的に学べそうだと感じたので、「初級者の基礎知識」から「一章第三回 配列のコピー」までを読みました。
説明がとっても丁寧…(゚д゚)!

以下自分まとめです。

プリミティブ

オブジェクト以外のプロパティを持たないものをプリミティブ(値)といい、数値、文字列などのプリミティブデータ型が存在します。プリミティブ値そのものは変更することはできません。

var a = 2
a = 5;  // 2が5という値に置き換えられている
var bar = "abc";
// toUpperCase()メソッド:
//     呼び出す文字列の値を大文字に変換して返す
bar.toUpperCase(); 
console.log(bar);  // abc
bar = bar.toUpperCase();
console.log(bar); // ABC

オブジェクト

プロパティ(変数)とメソッド(関数)の集合体です。
オブジェクトはプリミティブと違い変更が可能です。

配列もオブジェクト

配列もオブジェクトなので変更が可能です。

var a = [0, 1, 2, 3, 4];
var b = [0, 1, 2, 3, 4];
b = a;  // bにはaと同一オブジェクトが代入される
a[4] = 5;  // b[4]も5となる

別のオブジェクトとしてコピーしたい場合は下記のような方法があります。

function copyArray(arr) {
	var new_arr = [];
	for(var i = 0; i < arr.length; i++) {
		new_arr[i] = arr[i];
	}
	return new_arr;
}
var a = [0, 1, 2, 3, 4];
var b = [0, 1, 2, 3, 4];
b = copyArray(a);
a[4] = 5;  // aとbは別のオブジェクトなのでbは変わらない

関数内で新たに定義した配列に引数arrの要素を一つずつ代入することで、引数の配列arrとは別のオブジェクトを作成しています。

また、以下の記法でも同じ結果を得られます。

var b = [...a];  // var b = copyArray(a); と同じ意味

ただし、配列の要素自体がオブジェクトである場合、その要素は同一のオブジェクトとしてコピーされることになるので、注意が必要です。

-プログラミング, 学習, 記録
-, ,

Copyright© Kozue Blog , 2019 All Rights Reserved Powered by STINGER.