JavaScript 语法入门

扣子工作流智能体开发必备 · 零基础也能学会

🚀 10分钟快速上手
为什么学这个?

在扣子(Coze)平台开发智能体工作流时,JavaScript 是实现复杂逻辑的核心语言。 本教程只讲智能体开发最常用的语法,不学深奥理论,直接上手写代码!

💡 学习建议: 边看边练 · 复制代码到扣子代码节点 · 修改参数看效果
📦 1. 变量与数据类型
声明变量

letconst 声明变量,智能体开发推荐优先用 const

变量声明
const userName = "张三"; // 字符串,不会变 let userAge = 25; // 数字,可能会变 const isActive = true; // 布尔值
userName = "张三", userAge = 25, isActive = true
智能体常用数据类型
扣子工作流数据类型
// 📝 字符串 - 用户输入、回复内容 const userInput = "今天天气怎么样?"; // 🔢 数字 - 计数、评分、价格 const score = 95.5; // ✅ 布尔值 - 开关、判断条件 const isVIP = false; // 📦 数组 - 多条消息、标签列表 const tags = ["AI", "客服", "自动回复"]; // 🗂️ 对象 - 用户信息、配置参数 const user = { name: "李四", level: "premium", balance: 199.00 };
扣子实战:提取用户意图
const input = "帮我查一下北京明天的天气"; // 简单关键词匹配 if (input.includes("天气")) { return { intent: "weather_query", city: "北京" }; }
🔀 2. 条件判断
if / else 判断

根据用户输入或状态,执行不同逻辑

条件判断
const userLevel = "vip"; if (userLevel === "vip") { return "尊享专属服务"; } else if (userLevel === "premium") { return "高级会员服务"; } else { return "基础服务"; }
返回: "尊享专属服务"
智能体常用判断场景
// 🎯 场景1: 判断用户是否登录 if (!userId) { return { reply: "请先登录", needLogin: true }; } // 🎯 场景2: 根据意图分流 switch(intent) { case "order_query": return handleOrderQuery(params); case "refund": return handleRefund(params); default: return { reply: "抱歉,我还在学习中~" }; } // 🎯 场景3: 参数校验 if (!params.city || params.city.length > 20) { return { error: "城市名称格式不正确" }; }
⚠️ 注意: 比较用 === (严格相等),不要用 = (赋值) 或 == (宽松相等)
⚙️ 3. 函数(核心!)
函数定义与调用

扣子工作流中,函数是封装逻辑的基本单元

函数示例
// 定义一个格式化回复的函数 function formatReply(userName, message) { return `👋 ${userName}${message}`; } // 调用函数 const result = formatReply("张三", "欢迎使用智能客服!"); // result = "👋 张三,欢迎使用智能客服!"
箭头函数(更简洁)
// 传统函数 function add(a, b) { return a + b; } // 箭头函数(推荐) const add = (a, b) => a + b; // 扣子实战:处理用户消息 const processMessage = (msg) => { if (!msg) return "消息不能为空"; return msg.trim().toLowerCase(); };
扣子实战:智能回复生成器
const generateReply = (userMsg, context) => { // 1. 基础校验 if (!userMsg) return { reply: "请问您想咨询什么?" }; // 2. 意图识别(简化版) const lowerMsg = userMsg.toLowerCase(); let reply = ""; if (lowerMsg.includes("价格") || lowerMsg.includes("多少钱")) { reply = "我们的服务价格详情请访问官网查询~"; } else if (lowerMsg.includes("客服") || lowerMsg.includes("人工")) { reply = "正在为您转接人工客服,请稍候..."; } else { reply = `收到您的问题:${userMsg},我会尽力为您解答!`; } // 3. 返回结构化结果 return { reply: reply, timestamp: new Date().toISOString(), context: context }; };
🗂️ 4. 数组 & 对象操作
数组常用方法
const orders = [ { id: 1, status: "paid", amount: 99 }, { id: 2, status: "pending", amount: 199 } ]; // 🔍 过滤:只获取已支付订单 const paidOrders = orders.filter(o => o.status === "paid"); // 📊 映射:提取订单金额 const amounts = orders.map(o => o.amount); // [99, 199] // 🔢 查找:找ID为2的订单 const order = orders.find(o => o.id === 2); // ✅ 判断:是否有待处理订单 const hasPending = orders.some(o => o.status === "pending");
对象操作技巧
const config = { timeout: 3000, retry: 3 }; // 🔑 获取属性 const timeout = config.timeout; const retry = config["retry"]; // ✏️ 修改/添加属性 config.timeout = 5000; config.apiUrl = "https://api.example.com"; // 🧹 解构赋值(扣子常用!) const { timeout, apiUrl } = config; // 🔄 合并对象 const newConfig = { ...config, debug: true };
扣子实战:处理用户对话历史
// 假设从扣子传入对话历史 const messages = [ { role: "user", content: "你好" }, { role: "assistant", content: "您好!" }, { role: "user", content: "查订单" } ]; // 提取最近3条用户消息 const recentUserMsgs = messages .filter(m => m.role === "user") .slice(-3) .map(m => m.content); // 判断是否包含关键词 const hasOrderKeyword = recentUserMsgs .some(msg => msg.includes("订单") || msg.includes("查")); return { needOrderHelp: hasOrderKeyword };
🎁 5. 扣子开发实用技巧
✅ 调试技巧:console.log() 输出变量,在扣子调试面板查看日志
✅ 错误处理:
try { // 可能出错的代码 const result = riskyOperation(); } catch(error) { return { error: "服务繁忙,请稍后重试" }; }
✅ 返回格式规范: 扣子工作流建议返回 对象,便于后续节点解析
// ✅ 推荐 return { success: true, data: { reply: "处理成功" }, meta: { timestamp: new Date() } }; // ❌ 避免直接返回字符串 return "处理成功"; // 后续节点难解析
🔍数组过滤
📊数组映射
🔀条件判断
⚙️函数定义
🗂️对象解构
📤返回规范