返回true,我有以下的样本文档差(函数()),并在JavaScript
<!doctype html>
<html>
<head>
<title>My home page</title>
</head>
<body>
<h1>My home page</h1>
<p>Hello, I am Marijn and this is my home page.</p>
<p>I also wrote a book! Read it
<a href="http://eloquentjavascript.net">here</a>.</p>
</body>
</html>
我写了一个递归函数来找出一个字符串是否在文件或不
function talksAbout(node, string) {
if(node.nodeType == document.ELEMENT_NODE){
for(var i=0;i<node.childNodes.length;i++){
if(talksAbout(node.childNodes[i],string))
return true;
}
return false;
}
else if(node.nodeType == document.TEXT_NODE){
return (node.nodeValue.indexOf(string) > -1);
}
}
console.log(talksAbout(document.body,"wrote"));
但是当我在第3行的if语句改变从
if(talksAbout(node.childNodes[i],string))
return true;
简单
return taksAbout(node.childNodes[i],string)
它显示错误answer.can有人发现两者之间的区别。
我想我得到了这个。通过另一种方式导致函数仅检查树的一条路径。从根到第一个孩子,然后是第一个孩子,等等。 –
return并不是函数的返回函数的函数。 –
您正在评估'return(expression)'而不是'return(function())'。在你的情况下,一个条件表达式,其结果将是一个真/假值;如果你做了'return function.call()',它会导致* truthy *或* falsy *值 – BotNet