uni-app 怎么判断对象里面的属性值为空
2023年08月29日 277
这其实是 JS 的语法,当然在 uni-app 上也是同样的运行结果,语法完全可以平移挪用。
今天一位刚学习 uni-app 开发小程序的学生朋友问我,对象里的值怎么判断为空,其实很简单,
在 JavaScript 中如何理解“值为空”
在讲语法之前,首先需要理清,我们常说的空值,一般有这三种:
- 空字符串:””;
- 啥都不是:
null
; - 未定义:
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 中,存在类型自动转换机制,上面代码中,undefined
和 null
都被转成了 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,开发起来会寸步难行。