为什么这个简单的代码在firefox中失败,但在包括opera和旧IE版本在内的所有其他浏览器中都有效

时间:2012-06-03 04:53:51

标签: javascript firefox conditional undefined

function T(x){ return (x.textContent) ? function(y){ x.textContent = y; } : function(y){ x.innerText = y; }; }

T(nodeA)('string');
nodeText = T(nodeB);
nodeText('string');

如果我将(x.textContent)更改为(x.textContent !== undefined),则可以在Firefox中使用。否则我没有错误但没有任何反应。使用萤火虫进行检查表明T(node);返回function(),这对我来说只是令人困惑。

我是javascript的新手,但我认为这可能是一个错误?我认为它只能是真或假,它应该是真的并且返回第一个函数但它也不会返回。有人能说出原因吗?

1 个答案:

答案 0 :(得分:1)

如果给定节点的textContent为空字符串'',则其无效,其结果为false。这就是为什么你应该(typeof x.textContent !== 'undefined')来确保财产的存在。