这里是代码示例:
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。
我尝试使用 == 而不是 ===,但效果是一样的。
我尝试将 gets 的返回 -1 替换为 undefined,但我只是得到了
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);
为了避免覆盖另一个变量,得到了相同的结果
最佳答案
这个问题有两个问题。
第一个 - 您将覆盖 do
之后的变量 line
。
这就是为什么你会收到 Uncaught TypeError: Object -1 has no method 'search'
将该行更改为 parsed_line = gets(smil);//也永远不要忘记分号
第二 - search
不是 String 的函数,您需要 indexOf()
函数。
因此将 while(line.search())
更改为 while(line.indexOf())
。
我为你做了一个 fiddle demonstrates it here
关于javascript - 与 -1 或 undefined 的比较不起作用,无论是 == 还是 ===,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967790/