前端控制台报错is not defined

背景:

前端控制台报错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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值