JavaScriptのdelete, typeof, void, in, instanceof解説
JavaScriptのdelete, typeof, void, in, instanceof解説
delete
delete
は、オブジェクトのプロパティを削除するための演算子です。ただし、変数そのものを削除することはできません。
配列の要素やオブジェクトのキーに対して使用します。
例1: オブジェクトのプロパティを削除
const obj = { a: 1, b: 2 };
console.log(obj); // { a: 1, b: 2 }
delete obj.a;
console.log(obj); // { b: 2 }
例2: 配列の要素を削除
配列に対してdelete
を使用すると、その要素はundefined
になりますが、配列の長さは変わりません。
const arr = [1, 2, 3];
delete arr[1];
console.log(arr); // [1, undefined, 3]
console.log(arr.length); // 3
注意点
delete
は、オブジェクトのプロパティでのみ機能します。let
やconst
で定義された変数には使用できません。
let x = 10;
delete x; // false
console.log(x); // 10
typeof
typeof
は、値のデータ型を返します。JavaScriptでサポートされているデータ型には、number
, string
, object
などがあります。
例1: 基本的な使用例
console.log(typeof 42); // "number"
console.log(typeof 'hello'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof {}); // "object"
例2: 特殊なケース
null
に対しては"object"
が返されますが、これは歴史的なバグです。
console.log(typeof null); // "object"
関数の型判定
関数に対しては"function"
が返されます。
function myFunction() {}
console.log(typeof myFunction); // "function"
void
void
は、式の評価結果を明示的に無効化するための演算子です。主にリンクの無効化で使用されます。
例1: 関数の評価結果を無視
const result = void (console.log('Hello, World!'));
console.log(result); // undefined
例2: リンクの無効化
<a href="javascript:void(0)">クリックしても何も起こらない</a>
in
in
は、プロパティがオブジェクト内に存在するかどうかを判定するための演算子です。
例1: オブジェクトのプロパティの存在確認
const obj = { a: 1, b: 2 };
console.log('a' in obj); // true
console.log('c' in obj); // false
例2: 配列のインデックス確認
配列の場合はインデックスの存在を確認します。
const arr = [10, 20, 30];
console.log(1 in arr); // true
console.log(3 in arr); // false
instanceof
instanceof
は、オブジェクトが特定のクラスまたはコンストラクタのインスタンスかどうかを確認するために使用します。
例1: 基本的な使い方
class MyClass {}
const obj = new MyClass();
console.log(obj instanceof MyClass); // true
例2: 組み込みオブジェクト
const arr = [];
console.log(arr instanceof Array); // true
console.log(arr instanceof Object); // true
例3: 継承とinstanceof
class Parent {}
class Child extends Parent {}
const obj = new Child();
console.log(obj instanceof Child); // true
console.log(obj instanceof Parent); // true