我想知道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();
请先运行这些功能块中的哪一个或以何种顺序运行。
答案 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();
}
然后所有三个都按照从左到右列出的顺序运行。