Skip to content

vue中watch新值和旧值的有效性分支结构

完整分支结构:

javascript
const watchFn = (val, oldV) => {
    if (val === oldV) {
        // 值未变化
        if (val) {
            // 值A -> 值A (真值不变,如 true → true)
        } else {
            // 假值不变 (如 null → null)
        }
    }
    
    if (val !== oldV) {
        // 值发生变化
        if (val && oldV) {
            // 有效值A -> 有效值B (如 1 → 2)
        } else if (val && !oldV) {
            // 假值 → 真值 (初始化或状态翻转,如 null → 42)
        } else if (!val && oldV) {
            // 真值 → 假值 (状态清除,如 42 → null)
        } else {
            // 假值A → 假值B (如 0 → "" 或 undefined → null)
        }
    }
};

使用场景总结:

变化类型示例典型场景
真值 → 相同真值truetrue相同对象/数组引用更新
假值 → 相同假值nullnull空状态保持
真值A → 真值B12有效值更新
假值 → 真值null42初始化/重新赋值
真值 → 假值42null清除状态
假值A → 假值B0""空状态类型转换
/src/technology/dateblog/2025/07/20250710-vue%E4%B8%ADwatch%E6%96%B0%E5%80%BC%E5%92%8C%E6%97%A7%E5%80%BC%E7%9A%84%E6%9C%89%E6%95%88%E6%80%A7%E5%88%86%E6%94%AF%E7%BB%93%E6%9E%84.html