javascriptの二つの定義functionの違い
2853 ワード
皆さんは以下の二つのタイプのfunctionを定義する方法を知っています.
第二の方法でどうしていいですか?第二の方法で定義されたfunctionは、最初に初期化されるので、javaのstatic属性に似ています.
これを見て、新しい問題が来ました.上記の例のショーの方法はなぜ大丈夫ですか?
mychange方式の呼び出しはwindowのロードが完了してから実行されるので、ショーは初期化されました.最後に次の順番を見に来ました.
1、mychangeの説明方法
2、window.onload=mychangeを説明します.呼び出しはonloadの方法ですので、ここで一時停止し、引き続き説明します.
3、var showのこのscriptを説明して、windowの中のすべての内容をロードします.
4、ロード完了、mychange方法を実行する
// function
var fun1 = function() {
alert("fun1");
}
// function
function fun2() {
alert("fun2");
}
私たちは普段使っていますが、どのような方式を使いましたか?多くの場合は第一の方法を勧めますが、次のような状況を見てください.<!DOCTYPE html>
<html>
<head>
<title>event.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script>
window.onload = mychange;
// , function
// var mychange = function() {
// alert("hi");
// var ll = document.getElementsByTagName("li")
// alert(ll.length);
// for(var i=0,len=ll.length;i<len;i++) {
// alert(ll[i].innerHTML);
// ll[i].onclick = show;
// }
// }
// ,
function mychange() {
alert("hi");
var ll = document.getElementsByTagName("li")
alert(ll.length);
for(var i=0,len=ll.length;i<len;i++) {
alert(ll[i].innerHTML);
ll[i].onclick = show;
}
}
var show = function(event) {
event = event||window.event;
alert(event.type);
alert("hello"+this.innerHTML);
}
</script>
</head>
<body>
<ul>
<li>apple</li>
<li>pear</li>
<li>orange</li>
</ul>
</body>
</html>
なぜこのような状況が発生しましたか?以下のコードを追加します. window.onload = mychange;
alert(mychange);
このときウィンドウにundefinedを表示します.だから、これ以上実行できない.この点から、Javascript解釈器は前後の順序で解釈しながら実行されると分析できます.第二の方法でどうしていいですか?第二の方法で定義されたfunctionは、最初に初期化されるので、javaのstatic属性に似ています.
これを見て、新しい問題が来ました.上記の例のショーの方法はなぜ大丈夫ですか?
mychange方式の呼び出しはwindowのロードが完了してから実行されるので、ショーは初期化されました.最後に次の順番を見に来ました.
1、mychangeの説明方法
2、window.onload=mychangeを説明します.呼び出しはonloadの方法ですので、ここで一時停止し、引き続き説明します.
3、var showのこのscriptを説明して、windowの中のすべての内容をロードします.
4、ロード完了、mychange方法を実行する