在 Node.js 中,if (userUuid !== '')
和 if (userUuid != '')
不一样 ,核心区别在于比较运算符的严格性:
1. !==
:严格不相等运算符
-
规则 :同时比较值和类型,只有当两者值不相等 且类型也不相等 时,结果才为
true
。 -
示例 :
javascriptconst userUuid = ''; console.log(userUuid !== ''); // false(值和类型都相同) const userUuid = 0; console.log(userUuid !== ''); // true(值不同,类型也不同:number vs string) const userUuid = null; console.log(userUuid !== ''); // true(类型不同:null vs string)
2. !=
:非严格不相等运算符
-
规则:先尝试进行类型转换(将两边的值转为同一类型),再比较值是否不相等。
-
示例 :
javascriptconst userUuid = ''; console.log(userUuid != ''); // false(值相同) const userUuid = 0; console.log(userUuid != ''); // false(0 会被转为空字符串 '',值相同) const userUuid = null; console.log(userUuid != ''); // true(null 转换后与 '' 不相等) const userUuid = undefined; console.log(userUuid != ''); // true(undefined 转换后与 '' 不相等)
关键区别场景
当 userUuid
的类型不是字符串时,两者结果可能不同:
- 若
userUuid
是0
(数字):userUuid !== ''
→true
(类型不同)userUuid != ''
→false
(0 被转为''
,值相等)
- 若
userUuid
是null
:userUuid !== ''
→true
(类型不同)userUuid != ''
→true
(转换后值不相等)
建议
在判断字符串是否非空时,推荐使用 !==
,因为它不会进行隐式类型转换,逻辑更清晰,能避免因类型差异导致的意外结果(比如误判 0
为空白字符串)。
例如,确保 userUuid
是字符串且不为空:
javascript
if (userUuid !== '') {
// 执行逻辑
}