初学者:关于链接

时间:2013-12-09 01:56:31

标签: javascript

如果我写:

var headerDiv = document.createElement('div').appendChild(document.createTextNode('Chapter 1'));

变量headerDiv指向什么,div或文本节点?

2 个答案:

答案 0 :(得分:1)

也许这个例子选择不当,所以我会尝试根据不同的例子给出答案。想象一下,你有这个代码:

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();

答案 1 :(得分:0)

你不应该链接那样的函数。 document.createElement('div')将返回它创建的div元素。 document.createTextNode('Chapter 1')将返回它创建的文本节点。当你这样写它时,div会尝试调用一个名为document的函数,该函数不存在。而是写:

var headerDiv = document.createElement('div'),
    textNode = document.createTextNode('Chapter 1');