Javascript函数如何运行

时间:2015-03-13 23:21:44

标签: javascript jquery

我想知道javascript函数如何加载或运行。

举例来说,我有这些javascripts功能块;

<span id=indicator></span>

function BlockOne(){
    var textToWrite = document.createTextNode("I am   ");
    document.getElementById("indicator").appendChild(textToWrite);
} 
//==========
function BlockTwo(){
    var textToWrite = document.createTextNode("Going   ");
    document.getElementById("indicator").appendChild(textToWrite);
} 
//=========
function BlockThree(){
    var textToWrite = document.createTextNode("To School   ");
    document.getElementById("indicator").appendChild(textToWrite);
} 

function RunAll(){
    BlockOne();
    BlockTwo();
    BlockThree();
}
window.onload=RunAll();

请先运行这些功能块中的哪一个或以何种顺序运行。

1 个答案:

答案 0 :(得分:6)

此:

window.onload=BlockOne=BlockTwo=BlockThree;

只会导致&#34; BlockThree&#34;当&#34;加载&#34;事件火灾。解释赋值语句的方式就像它被写成:

window.onload = (BlockOne = (BlockTwo = BlockThree));

最右边的=运算符会导致符号&#34; BlockTwo&#34;设置为与#34; BlockThree&#34;相同的值,然后中间=将该值(仍然是&#34; BlockThree&#34;)分配给&#34; BlockOne&#34;。函数定义语句将函数名称绑定到本地符号,但它们不是特殊符号;它们与普通的var符号非常相似。

当这一切都完成后,&#34; onload&#34; window的属性设置为只有一个函数引用,并且&#34; BlockThree&#34;。在那之后,原始功能与&#34; BlockOne&#34;相关联。和&#34; BlockTwo&#34;将不再可参考;他们基本上已经离开了。

第二个将不运行任何一个,因为你的&#34; RunAll&#34;函数缺少所有三个函数的函数调用操作符(())。如果是

function RunAll(){
  BlockOne();BlockTwo();BlockThree();
}

然后所有三个都按照从左到右列出的顺序运行。