无需使用null关键字,还有哪些方法可生成null值?
不使用
null关键字生成null值的方法 嘿,这个问题挺有意思的!确实有不少不用写null关键字就能得到null值的技巧,我整理了几种不同场景下的方法,咱们来看看:
JSON序列化特殊数值后解析
这是你已经发现的技巧,利用JSON规范对特殊数值的处理:JSON.parse(JSON.stringify(NaN)) // 返回 null JSON.parse(JSON.stringify(Infinity)) // 同样返回 null JSON.parse(JSON.stringify(-Infinity)) // 也能得到 null原因是JSON格式不支持
NaN、Infinity和-Infinity,序列化时这些值会被转为"null",解析后就得到了null值。正则表达式匹配失败时的返回值
正则的exec方法或者字符串的match方法,当完全匹配不到目标内容时,都会返回null:/abc/.exec('def') // 匹配失败,返回 null 'xyz'.match(/123/) // 同样返回 null浏览器DOM查询找不到元素时的返回值
在前端浏览器环境中,很多DOM查询API找不到对应元素时会返回null:document.querySelector('#element-that-does-not-exist') // 返回 null document.getElementById('non-existent-id') // 也返回 null获取无原型对象的原型
用Object.create(null)可以创建一个没有原型的对象,调用getPrototypeOf方法获取它的原型时,就会得到null:Object.getPrototypeOf(Object.create(null)) // 返回 null Reflect.getPrototypeOf(Object.create(null)) // 同样返回 null
内容的提问来源于stack exchange,提问作者Royi Namir




