与-1或未定义进行比较不起作用,无论是使用==还是===

Comparison to -1 or undefined don t work, either with == or ===

本文关键字:无论是 还是 不起作用 比较 未定义      更新时间:2023-09-26

这里有一个代码示例:

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的return-1,但我只得到了

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

相反。

为什么if不执行?

编辑:尝试使用

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

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

这个问题有两个问题。

1st-您正在覆盖do后面的变量line。这就是为什么你得到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())

我为你做了一把小提琴,在这里演示

尝试添加一个break。

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