今さら聞けない javascript に出てくる名称単語集

一人で開発する時は気にしないのだけど、
チームで開発する時には名称が分からないと、
コードについて話す時に伝えたいことが伝わらなかったりで、
作業効率が落ちたりするので覚えた方が良いと思う。

あくまでコミュケーションをとるためなので、
ローカルルールで共通言語化されていれば覚えなくても良いと思う。

変数, 宣言, 代入, 定義

var x; // 変数 x を宣言する。
x = 2; // 変数 x に 2 を代入する。
var y = 'variable'; // 変数 y を宣言して 'variable' を定義する。

オブジェクト, プロパティ, メソッド

var obj = {}; // オブジェクトの定義。 {} で囲むのが一番簡単な方法。

var obj2 = {
	// オブジェクトに定義された変数を「プロパティ」という。
	x: 1,
	
	// オブジェクトに定義された関数を「メソッド」という。
	get: function() {
		return x * 2;
	},
};

console.log(obj2.x) // 1
console.log(obj2.get()) // 2 

null・undefined

宣言はされたけど何も入ってないのが null (ヌル)
宣言、定義すらされてないのが undefined (アン・ディファインド)

var x;
console.log(x); // null

console.log(y); // undefined

無名関数

名前の無い関数のこと。

// 変数 test を宣言して無名関数を定義する。
var test = function() {
	console.log('call')
};

test(); // 'call'

即時関数

関数を定義と同時に呼び出す構文を「即時関数」という。
グローバル汚染させないためによく使う。

// str という引数を持つ即時関数を定義する。
(function(str){
	console.log('call ' + str);
})('success'); // 'call success'

// 変数 test を宣言して無名関数を即時関数で定義する。
var test = function() {
	console.log('call');
}(); // 'call'

コールバック関数

引数に関数を持たせた関数。
コールバックは引数の最後尾に持たせるのが一般的。

// コールバック関数を定義する。
var test = function(x, callback) {
	callback(x * 2);
};

// コールバック関数を呼び出す。
test(2, function(res) {
	console.log(res); // 4
});

// 引数に何個も関数を持たせてもよい。
var test2 = function(x, success, error) {
	if (x) {
		success();
	} else {
		error();
	}
};

test2(true, function() {
	// success
},
function() {
	// error
});

スコープ・クロージャー

コード上における変数や関数の有効範囲 (参照できる範囲) のことをスコープという。
javascript ではグローバル変数、関数のスコープは、プログラム全体 (どこでも参照できる) になる。
ローカル変数、関数 (関数内に定義された変数、関数) のスコープは、その変数が宣言された関数の中だけになる。

クロージャーというのはスコープ中にある変数にアクセスできる関数のことをいう。
javascript の関数は全てクロージャー。

// 変数 g を宣言して、 'this is global' を定義する
var g = 'this is global';

// 関数 test を定義する。
function test() {
	var str = 'success';
	
	(function() {
		// javascript の関数は全てクロージャーなので、 str を参照できる。
		console.log(str)
		// g も参照できる。
		console.log(g)
	})()
}
console.log(str); // undefined になる。関数の中はスコープ外なので参照できない。
test() // 'success' 'this is global'

T

ドキュメントなどに突然出てくる T は「タイプ」という。つまり「型」。
String 型, Int 型, Boolean 型 などの、
なにかしらの型ということを表す。

イベント

javascript におけるイベントとは、
addEventListener() などに使われるイベントの事を指す場合が多い。

DOM (ドム)

Document Object Model のことをいう。
HTML や XML で書かれたコンテンツのこと。

プライベート・パブリック

関数を定義した時に、
関数内でしか扱えない変数、関数をプライベート変数、関数という。
関数の外からでも扱える変数、関数のことをパブリック変数、関数という。

function test() {
	// プライベート変数
	var str = 'success';

	return {
		// パブリック関数
		get: function() {
			return str;
		}
	};
}

var t = new test;
t.str; // プライベート変数なので参照できない。
t.get(); // パブリック関数なので呼び出せる。

prototype

プロトタイプという。
メモリの節約に使う。
prototype に定義したものは new する毎に毎回定義されることなく使用できるので、
一度にたくさん呼び出す必要がある関数に使うと効果的。
prototype は親クラスみたいなイメージ。

function sample1() {
	this.test = 'success';
}

// 書き方 1
sample1.prototype.get = function() {
	return this.test;
};

// 書き方 2
sample1.prototype = {
	get: function() {
		return this.test; // 'success'
	},
	// () => で定義すると this の参照先がおかしくなる
	dont: () => {
		return this.test; // undefined
	},
};

// 使い方。
// s.prototype.get() と書かなくて良い。
var s = new sample1();
s.get() // 'success'