在Javascript中检查isEmpty?

新手上路,请多包涵

如何检查 Javascript 中的变量是否为空?

 if(response.photo) is empty {
 do something
 else {
 do something else
 }

response.photo 来自 JSON,有时它可能是空的,空数据单元格!我想检查它是否为空。

原文由 Jhon Woodwrick 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 705
2 个回答

如果您正在测试空字符串:

 if(myVar === ''){ // do stuff };

如果您正在检查已声明但未定义的变量:

 if(myVar === null){ // do stuff };

如果您正在检查可能未定义的变量:

 if(myVar === undefined){ // do stuff };

如果您同时检查两者,即任一变量为空或未定义:

 if(myVar == null){ // do stuff };

原文由 brettkelly 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的解决方案:

 function isEmpty(object) {
 return (
 (!object)
 || (object === undefined)
 || (object === null)
 || (object === '')
 || ((object?.length !== undefined) && (object.length === 0))
 || (typeof object === 'object' && Object.keys(object).length === 0)
 );
 }

用 Jest 进行测试:

 describe('isEmpty should return `false` when the parameter have some truthy value.', () => {
 test('Empty objects should return true', () => {
 expect(utils.isEmpty([])).toBe(true);
 expect(utils.isEmpty({})).toBe(true);
 expect(utils.isEmpty('')).toBe(true);
 expect(utils.isEmpty(undefined)).toBe(true);
 expect(utils.isEmpty(null)).toBe(true);
 });

 test('Truthy objects should return false', () => {
 expect(utils.isEmpty([1])).toBe(false);
 expect(utils.isEmpty({a: undefined})).toBe(false);
 expect(utils.isEmpty({a: 5})).toBe(false);
 expect(utils.isEmpty({a: 5, b: 6, c: undefined})).toBe(false);
 expect(utils.isEmpty('f00')).toBe(false);
 expect(utils.isEmpty('0')).toBe(false);
 });
 })

原文由 Yam Mesicka 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题