如果我写:初学者:有关链接
var headerDiv = document.createElement('div').appendChild(document.createTextNode('Chapter 1'));
什么变量headerDiv点,股利或文本节点?
如果我写:初学者:有关链接
var headerDiv = document.createElement('div').appendChild(document.createTextNode('Chapter 1'));
什么变量headerDiv点,股利或文本节点?
也许这个例子选择不好,所以我会尝试给出一个基于不同例子的答案。想象一下你有这样的代码:
var foo = func1();
var bar = foo.func2();
var baz = bar.func3();
这里我们将每个函数调用的结果存储在一个变量中。如果您想在多个地方重复使用计算结果,这非常有用。
但是,如果你需要的结果只有一次,你可以替换与计算的值表达式的变量名:
var bar = (func1()).func2(); // bar -> func1()
var baz = bar.func3();
我们当然可以为bar
再次做到这一点:
var baz = ((func1()).funct2()).func3();
这会在开始时创建与代码相同的结果。只是不用保存中间步骤的结果,而是立即使用它们。包装子表达式的括号在这里不是必要的,因此整个表达式可以简化为:
var baz = func1().funct2().func3();
您不应该链接那样的函数。 document.createElement('div')
将返回它创建的div元素。 document.createTextNode('Chapter 1')
将返回它创建的文本节点。当你写它时,div会尝试调用一个名为document的函数,该函数不存在。相反写:
var headerDiv = document.createElement('div'),
textNode = document.createTextNode('Chapter 1');
这是一个诡计的问题吗?答:也没有。变量的值将是'undefined',因为你得到一个类型错误:'TypeError:不能调用'undefined'的方法'createTextNode'。 –
如果您在询问之前检查,该怎么办? SO不是一个在线的JS评估者 – zerkms
嗯......我想知道你是否打算链接'.appendChild()'作为一个arg的文本节点?或者,也许'文件'是为了'.ownerDocument'? –