You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Apps Script中正确判断变量是否为空

问题原因分析

  1. 只有字符串、数组等类型自带length属性,数字类型本身没有该属性,所以你直接读取数字0的length会返回undefined(你观测到的null是运行环境的输出适配问题)
  2. 你写的toString.length写法错误:toString是原型方法,不加括号直接访问length读的是函数本身的形参个数,而非转换后字符串的长度,自然得不到正确结果。

可行解决方案

首先明确判定规则:仅undefined、null、空字符串""算为空,数字0、字符串"0"、其他非空字符串都不算空,符合需求的判断函数如下:

function isEmpty(criteria) {
  // 先匹配undefined、null两类空值
  if (criteria == null) return true;
  // 再匹配空字符串
  if (typeof criteria === 'string' && criteria === '') return true;
  // 其余情况均判定为非空
  return false;
}

你可以用修改后的测试代码验证结果:

function test() {
  function isEmpty(criteria) {
    if (criteria == null) return true;
    if (typeof criteria === 'string' && criteria === '') return true;
    return false;
  }
  criteria_1 = "";
  Logger.log(isEmpty(criteria_1)); // 输出 true
  criteria_2 = 0;
  Logger.log(isEmpty(criteria_2)); // 输出 false
  criteria_3 = "0";
  Logger.log(isEmpty(criteria_3)); // 输出 false
  criteria_4 = "X";
  Logger.log(isEmpty(criteria_4)); // 输出 false
}

如果你的变量确定只会出现undefined、null、数字、字符串四种类型,也可以简化为转换后判断:

function isEmpty(criteria) {
  return criteria == null || criteria.toString() === '';
}

注意这里toString必须加括号调用,才能得到变量转换后的字符串


内容的提问来源于stack exchange,提问作者Newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:06:01