JS编程要当心null和"null",尤其是后面那个

  在调试一个带下拉列表的表单程序时,发现一个问题,这个表单是用dialog来显示的,当第一次打开dialog时,select不能够显示当前选项,而再次打开时能够正确显示了,而且这个问题能够重复。

 

  select 的选项是用ajax加载的,只加载一遍;表单的数据也是用ajax加载,每次打开dialog时都重新加载。通过在js中增加日志输出,发现第一次打开 dialog时,表单数据先加载完成,而select选项后加载完成。这样会导致一个问题,将表单数据中的对应select的值设置到select时,肯 定是无法保存的,因此又增加了一个全局变量来保存表单数据;当加载select数据的ajax调用返回后,取select的当前值,如果没有当前值,则使 用已保存的全局变量中的值,然后重新构造select的option选项。当第一次打开表单对话框时,显示select当前选项为空,js日志输出当前值 为null,实际上应该是有值的。而后来再打开表单对话框时,显示select为正确的值。

 

  仔细检查了代码之后,发现select默认有个选项,其值为null,代码为:<select><option value="null"></option></select>。这就可以解释上面的现象了,js日志输出的null是 字符串null,而不是js那个null对象。将null去掉之后程序就正常了:<select><option value=""></option></select>。

 

  类似的问题也可能发生的Java,因为有时候字 符串String为null,有时候又可能为"null",而输出的结果都一样,很难分辨,容易造成一些潜在的问题。这可以说是Java在设计时的一个问 题,而C/C++似乎就好一些,字符串0指针打印的值为(null),加了小括号这样就能通过输出清楚地分辨出来。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值