javascript - 与 -1 或 undefined 的比较不起作用,无论是 == 还是 ===

标签 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。

我尝试使用 == 而不是 ===,但效果是一样的。

我尝试将 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/

相关文章:

javascript - 使用 javascript 打印另一个 HTML 页面 :window. print

javascript - 如何将数组中的元素按顺序和偶数排序,并且它们应该按升序排列

javascript - 根据字段划分 JSON 对象数组

c# - 在哈希表实现方面需要帮助

node.js - 从nodejs批量加载titan db中的数据

javascript - 如何模糊除列表项之外的整个主体?

Javascript面向对象的应用程序结构

string - 符合模式的整个单词的 Scala 字符串替换

c# - .net 中的转换 : Native Utf-8 <-> Managed String

node.js - 使用空数组添加新用户记录时为 "E11000 duplicate key error collection"