2

javascriptを使い始めたばかりですが、説明できないものを見ました。
TestClass.jsという名前のjsファイルとその次のものがあります。

TestClass.SetError = function (errorDescription, errorCode, typedErrorCode)
{
    alert("SetError ");
}  

function SetError2(errorCode)
{
    alert("SetError2 ");
}  

SetErrorとSetError2の違いを教えてもらえますか?

4

6 に答える 6

1

最初のコード(SetError)にはが含まれAnonymous Function Expression、2番目のコード(SetError2)にはが含まれますFunction Declaration関数宣言と関数式を参照してください。

別の良い記事:名前付き関数式の謎を解き明かす

抜粋:

関数宣言は、他の式よりも先に解析および評価されます。宣言がソースの最後に配置されている場合でも、スコープに含まれる他のすべての式が最初に評価されます。

それが基本的に主な違いです。それほど大きくはありませんが、知っておく価値があります。

于 2012-09-11T10:04:58.543 に答える
1

違いは、ブラウザがそれらを実行コンテキストにロードする方法にあります。

コードが実行される前に関数がロードされます。

一方、式は、インタープリターがそのコード行に到達したときにのみロードされます。

于 2012-09-11T10:05:22.497 に答える
1

SetErrorは、オブジェクトTestClassのメソッドです。SetError2はグローバル関数です。

于 2012-09-11T10:03:08.950 に答える
0

SetError2「名前付き」メソッドです。 は、匿名メソッドを参照するTestClass.SetErrorのメンバー変数です。TestClassつまり、後で行うことができますTestClass.SetError = function(){ alert ("SetError2");}

于 2012-09-11T10:04:47.847 に答える
0

Javascriptにはオブジェクトと関数があります。

オブジェクトには、オブジェクトや関数を含めることができます。

これはオブジェクトです:

var TestClass = {};

次のように、新しいオブジェクトをTestClassオブジェクトに追加できます。

var TestClass = { object : {}};

次に、次のようにアクセスできます。

var a = TestClass.object;

オブジェクトに関数を含めることができます。

var TestClass = {object:{}, setError:function(){/*function body*/}};

これで、次のようにテストクラスの関数を呼び出すことができます。

TestClass.setError();

さらに、関数自体は次のように定義できます。

function setError2(){/*function body*/}

そして、あなたはこのように呼び出すことができます:

setError2();

通常、オブジェクトに関数を定義して、JavascriptでOOを実装し、厄介なjsコードを防ぎます。

于 2012-09-11T10:13:09.393 に答える
-2

これ:

function SetError2(errorCode) {
  alert("SetError2 ");
}

これと同等です:

window.SetError2 = function(errorCode) {
  alert("SetError2 ");
}
于 2012-09-11T10:04:56.707 に答える