一个“引号”引起的血案!外一则编码引起的超诡异问题

网页变成遇到JavaScript的问题算是够头痛的,特别是对我这种网页开发新手来说,更是雪上加霜。不仅仅是对他的不熟悉,更是调试工具使用的不熟悉,再加上本来就不好调试,一切加起来,困难重重。

今天就遇到了一个超级诡异的问题,在一个JavaScript函数中找不到另一个函数,大体就是这样的

<script type="text/javascript" src="bFun.js"></script>

function A()

{

B()

}

bFun.js这样定义

.....(some functions)

 

B()

{

....

}

...(some functions)

然而执行到B()的时候提示“没有对象”。郁闷啊,B()明明就是定义了的!还有那些地方有错误呢?

后来高手过来帮忙调试,发现在这个之前还有页面的错误,我忽略了,是一处提示没有括号的错误。

第一眼还是没有看出来怎么回事,反复查看以后,发现,原来是掉了一个引号~~~正如下面的样式

...

string str=a+"some text"+ p + OtherText";

就是OtherText前面少了一个引号,造成了解析器误以为OtherText以后的部分都是字符串类型,当然b()在OtherText之后,当然就找不到问题了~~~~

真是诡异。

问题解决之后,才发现,原来,解释性语言那么麻烦~~~还是静态编译的好一些。想想,如果JavaScript有某种语法检测工具那该多好啊~~~或许我还没有发现吧。

 

另外一个诡异的问题来自于同事,程序当中有时候要对字符串进行比较,类似于以下的:

if(step=="步骤")....

当他调试到step的时候,纵使step的值是“步骤”,if都不跳转到应该执行的代码!!

怎么回事呢?

原来这个代码的源代码的编码在vss里面出了问题,checkout之后的编码也不是正常的编码,造成了"步骤"编译以后的二进制值和由其他地方传过来的step的二进制值不相同,而机器比较的时候不是比较字面的,而是直接比较内存中的值,这就造成了异常诡异的BUG。

将源代码重新编辑保存就对了。

看来,第一,在写代码的时候,一些大量常用的字符串,能够放在一个固定的文件里面,所有需要用到的时候都从那儿提取,就会大大减少类似的错误。第二,程序中的字符串如非必要,还是以英文为好。

转载于:https://www.cnblogs.com/hesicong/archive/2007/08/09/849544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值