如何在Google Apps Script中正确判断变量是否为空
问题原因分析
- 只有字符串、数组等类型自带
length属性,数字类型本身没有该属性,所以你直接读取数字0的length会返回undefined(你观测到的null是运行环境的输出适配问题) - 你写的
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
相关产品推荐
相关产品推荐

