当前位置:首页 > 开发 > Web前端 > JavaScript > 正文

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

发表于: 2013-01-19   作者:coding1688   来源:转载   浏览:
摘要:   在调试一个带下拉列表的表单程序时,发现一个问题,这个表单是用dialog来显示的,当第一次打开dialog时,select不能够显示当前选项,而再次打开时能够正确显示了,而且这个问题能够重复。     select 的选项是用ajax加载的,只加载一遍;表单的数据也是用ajax加载,每次打开dialog时都重新加载。通过在js中增加日志输出,发现第一次打开 dialog时,表单数

  在调试一个带下拉列表的表单程序时,发现一个问题,这个表单是用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),加了小括号这样就能通过输出清楚地分辨出来。

 

 

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号