与-1或未定义的比较不适用于==或===

时间:2013-07-31 10:22:35

标签: javascript string node.js compare

这是一段代码示例:

do
{
    line=gets(smil);
    if (line===-1){console.log("Abort");callback(-1);}
    console.log("line= "+line);
}while(line.search("<video")===-1);

第一个输出顺利,但突然,我得到了

line= -1
TypeError: Object -1 has no method 'search'

gets是一个自定义函数,如果出错,则返回字符串或-1。

我尝试使用==而不是===,但它只是做同样的事情。

我试图用undefined替换gets的返回-1,但我得到了

line= undefined
TypeError: Cannot call method 'search' of undefined

代替。

为什么不执行?

编辑: 试过

var pline
do
{
    pline=gets(smil);
    if (pline===-1){console.log("Abort");callback(-1);}
    console.log("line= "+pline);
}while(pline.search("<video")===-1);

为了避免覆盖另一个变量,得到了相同的结果

2 个答案:

答案 0 :(得分:1)

这是一个两个问题。

1st - 您正在line之后覆盖变量do。 这就是你得到Uncaught TypeError: Object -1 has no method 'search'

的原因

将该行更改为parsed_line = gets(smil); //also never forget semicolons

2nd - search不是String的函数,你想要indexOf()函数。

所以将while(line.search())更改为while(line.indexOf())

我为你做了一个小提琴demonstrates it here

答案 1 :(得分:0)

尝试添加休息时间。

do
{
    line=gets(smil);
    if (line===-1){
        console.log("Abort");
        callback(-1);
        break;
    }
    console.log("line= "+line);
}while(line.search("<video")===-1);