Javascript 为什么这个简单的代码在firefox中失败了,但在其他浏览器(包括opera和旧IE版本)中都能正常工作

Javascript 为什么这个简单的代码在firefox中失败了,但在其他浏览器(包括opera和旧IE版本)中都能正常工作,javascript,firefox,conditional,undefined,Javascript,Firefox,Conditional,Undefined,如果我将(x.textContent)更改为(x.textContent!==未定义)它在firefox中工作。否则我不会出错,但什么也不会发生。用firebug检查显示T(节点)返回函数(),这让我很困惑 我是javascript新手,但我认为这可能是一个bug??我认为它只能为真或假,它应该为真并返回第一个函数,但它也不返回。有人能说出原因吗?如果给定节点的textContent是一个空字符串',其计算结果为false,则此操作无效。这就是为什么您应该执行(typeof x.textCont

如果我将
(x.textContent)
更改为
(x.textContent!==未定义)
它在firefox中工作。否则我不会出错,但什么也不会发生。用firebug检查显示
T(节点)
返回
函数()
,这让我很困惑


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

如果给定节点的
textContent
是一个空字符串
'
,其计算结果为
false
,则此操作无效。这就是为什么您应该执行
(typeof x.textContent!==“undefined”)
来确保属性的存在。

——它在chrome中不起作用。什么是节点但无论如何,如果我指定节点,它确实可以工作manually@zerkms它在chrome中对我有效。我只是举例说明我是如何使用这个函数的;nodeA与nodeB是不同的节点。@zerkms手动???我的意思是节点作为任何具有textContent属性或innerText属性的dom对象。我不理解你的答案。如果条件评估为false,为什么第二个函数不返回:
function(y){x.textContent;}
当我在firebug控制台中测试时,
textContent
innerText
属性都存在。所以在我看来,无论返回哪个函数,都应该工作。问题是两者都不能返回。事实上,这是一个很好的观点。我仍然不明白为什么firefox会出错,但无论如何我都应该更改它,否则它可能会因为空字符串而分配错误的函数。谢谢你的回答。Firefox不支持非标准的
innerText
属性。
function T(x){ return (x.textContent) ? function(y){ x.textContent = y; } : function(y){ x.innerText = y; }; }

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