---
title: $if – ทำ conditional logic แบบ if-else ใน expression
url: https://www.thepexcel.com/functions/n8n/other/if-n8n/
type: function-explainer
program: n8n
syntax: "$if(condition, valueIfTrue, valueIfFalse)"
date: 2025-12-16
updated: 2025-12-22
scores:
  popularity: 10
  difficulty: 3
  usefulness: 10
---

# $if – ทำ conditional logic แบบ if-else ใน expression

> $if() เป็น n8n built-in convenience function สำหรับทำ conditional logic (if-else) ใน expressions ทำง

## คำอธิบาย

$if() เป็น n8n built-in convenience function สำหรับทำ conditional logic (if-else) ใน expressions ทำงานเหมือน ternary operator (condition ? true : false) แต่อ่านง่ายกว่า คืนค่าตาม condition ที่กำหนด เหมาะสำหรับแปลง status code เป็นข้อความ ให้ค่า default กรณีข้อมูลหายไป หรือจัดหมวดหมู่ข้อมูลตามเงื่อนไข

## Syntax

```excel
$if(condition, valueIfTrue, valueIfFalse)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| condition | Yes | boolean |  | เงื่อนไขที่ต้องการเช็ค ต้อง evaluate เป็น true หรือ false (เช่น $json.status === 'active', $json.age >= 18) |
| valueIfTrue | Yes | any |  | ค่าที่คืนเมื่อ condition เป็น true (string, number, object, array ได้หมด) |
| valueIfFalse | Yes | any |  | ค่าที่คืนเมื่อ condition เป็น false |

## เคสการใช้งาน

### แปลง status code เป็นข้อความที่อ่านง่าย (0/1 → Yes...

แปลง status code เป็นข้อความที่อ่านง่าย (0/1 → Yes/No, active/inactive → Online/Offline)

_เหมาะกับ:_ general

### ให้ค่า default เมื่อข้อมูลเป็น null, undefined, หร...

ให้ค่า default เมื่อข้อมูลเป็น null, undefined, หรือ empty string

_เหมาะกับ:_ general

### จัดหมวดหมู่ข้อมูลตามเงื่อนไข (อายุ, คะแนน, ยอดขาย)

จัดหมวดหมู่ข้อมูลตามเงื่อนไข (อายุ, คะแนน, ยอดขาย)

_เหมาะกับ:_ general

### Conditional formatting หรือ labeling ของข้อมูล

Conditional formatting หรือ labeling ของข้อมูล

_เหมาะกับ:_ general

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: แปลง status เป็นข้อความ

```excel
{{ $if($json.status === 'active', 'Online', 'Offline') }}
```

**ผลลัพธ์:** `Online`

สมมติ $json.status = 'active' เงื่อนไขเป็น true จึงคืน 'Online' ถ้า status เป็นค่าอื่นๆ ที่ไม่ใช่ 'active' จะได้ 'Offline' แทน pattern นี้ใช้บ่อยมากในการแปลง status code เป็นข้อความที่อ่านง่ายสำหรับแสดงผลใน report หรือส่งแจ้งเตือนครับ

### 2. ตัวอย่างที่ 2: ให้ค่า default กรณีข้อมูลว่าง

```excel
{{ $if($json.name, $json.name, 'Unknown User') }}
```

**ผลลัพธ์:** `John`

สมมติ $json.name = 'John' เนื่องจาก 'John' เป็น truthy จึงคืนค่า 'John' ออกมาตามปกติ แต่ถ้า name เป็น null, undefined หรือ '' จะได้ 'Unknown User' แทน วิธีนี้ใช้บ่อยมากในการจัดการข้อมูลที่อาจหายไปหรือไม่ครบถ้วนจากระบบต้นทางครับ

### 3. ตัวอย่างที่ 3: จัดหมวดหมู่ตามช่วงค่า

```excel
{{ $if($json.total >= 1000, 'Premium', 'Standard') }}
```

**ผลลัพธ์:** `Premium`

สมมติ $json.total = 1500 เนื่องจาก 1500 >= 1000 เงื่อนไขเป็น true จึงได้ 'Premium' แต่ถ้า total น้อยกว่า 1000 จะได้ 'Standard' แทน วิธีนี้ใช้บ่อยในการจัดหมวดหมู่ลูกค้าหรือคำสั่งซื้อตามยอดเงินครับ

### 4. ตัวอย่างที่ 4: ซ้อน $if สำหรับหลายเงื่อนไข

```excel
{{ $if($json.score >= 80, 'A', $if($json.score >= 60, 'B', 'C')) }}
```

**ผลลัพธ์:** `A`

สมมติ $json.score = 85 เช็คเงื่อนไขแรก (score >= 80) เป็น true จึงได้ 'A' ถ้า score = 70 จะเข้าเงื่อนไขที่สองแทน ได้ 'B' ถ้าต่ำกว่า 60 ได้ 'C' การซ้อนกันแบบนี้ทำงานเหมือน if-else if-else ใน programming ทั่วไป เหมาะมากสำหรับการให้เกรดหรือจัดกลุ่มตามช่วงคะแนนครับ

## หมายเหตุเพิ่มเติม

- $if() เป็น n8n built-in ไม่ใช่ JavaScript standard ถ้าต้องการใช้ใน Code node ให้ใช้ ternary operator (? :) แทน

- ใช้ && (AND) หรือ || (OR) รวมหลายเงื่อนไข เช่น $if($json.active && $json.verified, 'Ready', 'Pending')

- สำหรับ default value อย่างง่าย ใช้ ?? (nullish coalescing) แทนได้ เช่น {{ $json.name ?? 'Unknown' }}

## คำถามที่พบบ่อย

**Q: $if() กับ ternary operator (? :) ต่างกันอย่างไร?**

ทำงานเหมือนกันทุกประการครับ $if(condition, valueIfTrue, valueIfFalse) เท่ากับ condition ? valueIfTrue : valueIfFalse แต่ $if() อ่านง่ายกว่าสำหรับคนที่ไม่คุ้นเคย JavaScript เลือกใช้ตามความชอบได้เลย ส่วนตัวผมชอบ $if() มากกว่าเพราะชัดเจนว่าค่าไหนเป็น true ค่าไหนเป็น false ครับ

**Q: สามารถ nest (ซ้อน) $if ได้กี่ชั้น?**

ซ้อนได้ไม่จำกัด แต่ไม่แนะนำเกิน 2-3 ชั้น เพราะอ่านยาก ถ้า logic ซับซ้อนควรย้ายไป Code node หรือใช้ Switch node แทนเพื่อความชัดเจน

**Q: ถ้า condition เป็น undefined จะได้อะไร?**

undefined เป็น falsy จะคืน valueIfFalse ต้องระวัง falsy values อื่นๆ ด้วย: 0, '', null, NaN, false ล้วน falsy ทั้งหมด ถ้าต้องการเช็คแบบ strict ใช้ !== null หรือ !== undefined

## แหล่งข้อมูลเพิ่มเติม

- [n8n Expressions Documentation](https://docs.n8n.io/code/expressions/) _(article)_
- [n8n Check Incoming Data Cookbook](https://docs.n8n.io/code/cookbook/expressions/check-incoming-data/) _(article)_
- [n8n Community: If/Else in Expressions](https://community.n8n.io/t/if-else-inside-expression/8090) _(article)_

---

_Source: [https://www.thepexcel.com/functions/n8n/other/if-n8n/](https://www.thepexcel.com/functions/n8n/other/if-n8n/)_
