0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】TruthyとFalsyについて理解する

Posted at

概要

JavaScriptでは、値が真(true)または偽(false)として評価される場合があります。これをそれぞれ「Truthy」と「Falsy」と呼びます。

Falsyの値

JavaScriptでFalsyとして評価される主な値は以下の通りです:

  • false
  • 0
  • ""(空文字列)
  • null
  • undefined
  • NaN
  • -0

Truthyの値

Falsy以外のすべての値はTruthyとして評価されます:

  • true
  • 0以外の数値(1, -1, 3.14など)
  • 空でない文字列("hello", "0"など)
  • オブジェクト({}, []など)
  • 関数

NOT演算子(!)

NOT演算子(!)は、値の真偽を反転させる演算子です。

基本的な動作

// boolean値の反転
console.log(!true);   // false
console.log(!false);  // true

// Falsy値に対する反転
console.log(!0);      // true
console.log(!"");     // true
console.log(!null);   // true
console.log(!undefined); // true

// Truthy値に対する反転
console.log(!1);      // false
console.log(!"hello"); // false
console.log(!{});     // false

ダブルNOT演算子(!!)

値を明示的にboolean型に変換するために使用:

console.log(!!"hello");    // true
console.log(!!"");         // false
console.log(!!0);          // false
console.log(!!1);          // true

実践的な活用例

1. フォームバリデーション

function validateForm() {
    const username = document.getElementById('username').value;
    const email = document.getElementById('email').value;
    
    // Falsyを活用した簡潔なバリデーション
    if (!username) {
        alert('ユーザー名を入力してください');
        return false;
    }
    
    if (!email) {
        alert('メールアドレスを入力してください');
        return false;
    }
    
    return true;
}

2. デフォルト値の設定

function greetUser(name, age) {
    // Falsyの場合にデフォルト値を設定
    const displayName = name || 'ゲスト';
    const displayAge = age || '不明';
    
    console.log(`こんにちは、${displayName}さん(${displayAge}歳)`);
}

3. 配列・オブジェクトの存在チェック

const items = ['apple', 'banana'];

// 配列の長さをTruthyで判定
if (items.length) {
    console.log('商品があります');
}

// オブジェクトのプロパティ存在チェック
const user = { name: '田中', email: '' };
if (user.email) {
    console.log(`メール: ${user.email}`);
} else {
    console.log('メールアドレスが未設定です');
}

4. 条件付きレンダリング

function updateUserProfile(userData) {
    const profileDiv = document.getElementById('profile');
    
    if (userData && userData.name) {
        profileDiv.innerHTML = `
            <h2>${userData.name}</h2>
            ${userData.bio ? `<p>${userData.bio}</p>` : ''}
        `;
    } else {
        profileDiv.innerHTML = '<p>プロフィール情報がありません</p>';
    }
}

メリット

  1. 条件分岐の簡潔な記述 - 冗長な比較演算を削減
  2. デフォルト値の設定 - OR演算子を使った効率的な初期化
  3. バグの予防 - null/undefinedによる実行時エラーの回避
  4. コードの可読性向上 - 意図が明確で理解しやすいコード
  5. JavaScriptらしい記述 - 言語の特性を活かした自然な書き方

TruthyとFalsyの概念を理解することで、より効率的で安全なJavaScriptコードを書けるようになります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?