首页 小程序开发 正文内容

uni-app 怎么判断对象里面的属性值为空

2023年08月29日 , 277

这其实是 JS 的语法,当然在 uni-app 上也是同样的运行结果,语法完全可以平移挪用。

今天一位刚学习 uni-app 开发小程序的学生朋友问我,对象里的值怎么判断为空,其实很简单,

在 JavaScript 中如何理解“值为空”

在讲语法之前,首先需要理清,我们常说的空值,一般有这三种:

  1. 空字符串:””;
  2. 啥都不是:null
  3. 未定义:undefined

空字符串就不用说了,很容易理解。而 JavaScript 中 null 表示“什么都没有”,表示一个空对象引用。一般用来主动释放变量引用的对象,表示这个变量不再指向任何对象地址。所以有些比较大的对象想要释放内存,一般用 bigObject = null; 来处理。

下面来看看我这位朋友的疑问点。

朋友写的代码

// 定义一个对象
const object = {
  key1: "",
  key2: null,
  key3: 20
}
// 判断为空(null)
console.log(object.key1 == null) // 输出:true
console.log(object.key100 == null) // 一个不存在的属性值,也输出:true

上面代码最后一行判断不存在的属性值,同样返回 true,这明显不符合直觉,造成他有疑问的关键是因为在 JS 中,存在类型自动转换机制,上面代码中,undefinednull 都被转成了 false,所以 false 等于 false

正确判断为空的方法

只要把 == 改成 === 来判断对象的属性值就可以了。原因是 JS 中的全等号 === 不仅会比较布尔值,还会比较数据类型,只有完全匹配时,才会输出 true。代码如下:

const object = {
  key1: "",
  key2: null,
  key3: 20
}
console.log(object.key1 === null) // 输出:true
console.log(object.key100 === null) // 输出:false

总结:还是语法基础不扎实

这样就能避免判断出错了,uni-app 用的也是 JS 语法,微信小程序里运行的也是 JS,除了一些浏览器专有的方法和内置对象不能使用外,其它和在浏览器里运行没有什么区别,初学者学习 uni-app 开发时,一定要先学习 JavaScript 语法,把基本功练好,如果直接上来就学 uni-app 和 Vue,开发起来会寸步难行。