如果我写:
var headerDiv = document.createElement('div').appendChild(document.createTextNode('Chapter 1'));
变量headerDiv指向什么,div或文本节点?
答案 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');