背景:
前端控制台报错is not defined的bug,在一个页面渲染的模板里,多个接口都使用了同一个模板,但是接口返回的参数是不同的。有些接口返回了这个参数,另一些接口可能压根就没有这个参数。这个时候进行页面渲染,调用了那个不存在的参数,就报了is not defined的错。
Is not defined是程序上的错,因为没有声明这个变量就使用了它导致的报错。
解决方法:
面对这种情况,不能提前声明、防止重复声明,普通的判空方法会报错,又必须要进行判空。这时候使用typeof XX != ‘undefined’ && XX进行判空处理,第一个是判断是否定义,第二个是判断空值。
那么undefined instanceof XX起效吗? 答案是仍然会报错
那么typeof XX != 'null’起效吗?XX实际上是undefined,而非null,虽然结果为true,但是下一步值判空还是会报错。
原因排查:
其他参考:
https://www.jb51.net/article/240832.htm
↓
Javascript中undefined和not defined有什么区别?
概念上的解释:
undefined是javascript语言中定义的五个原始类中的一个,换句话说,undefined并不是程序报错,而是程序允许的一个值。
not defined是javascript在运行我们的javascript代码时,遇到没有定义就用来运算的变量时爆出来的错误。
在许多的javascript教程中都介绍有javascript变量即使不定义也可以直接拿来使用,但是请注意,这个使用是指可以被赋值,但是不可以被运算
XX=123;//未定义参数可以被赋值,是可以执行的YY?true:false;//未定义参数不可使用,是is not defined
版权归原作者 绣**** 所有, 如有侵权,请联系我们删除。