0

http://jsfiddle.net/QWXf4/1/の JavaScript コード スニペットを次に示します。

var x = 5;

function PartyWithoutX(person) {
    // This property will go to window and pollute the global object
    dance = function (person) {
        document.write("Hello " + person.getFullName() + ", Welcome to the Party.");
    };

    this.showX = function () {
        // This will change the global x variable
        x = 25;
        document.write("Value of x is " + x);
    };
}

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

Person.prototype.getFullName = function () {
    return this.firstName + " " + this.lastName;
};

var dinesh = new Person("Dinesh", "Singh");

var p1 = new PartyWithoutX(dinesh);

document.write(window.dance(dinesh) + "; Enjoy!!");
document.write("<br/>");
document.write(p1.showX());
document.write("<br/>");
document.write(window.x);
document.write("<br/>");

確認できる出力は次のとおりです

Hello Dinesh Singh, Welcome to the Party.undefined; Enjoy!!
Value of x is 25undefined
undefined

私は期待していました

Hello Dinesh Singh, Welcome to the Party; Enjoy!!
Value of x is 25
undefined

出力に「Party.undefined」と「25undefined」が表示されるのはなぜですか。

何が起きてる?

4

3 に答える 3

2

あなたがするとき

document.write(p1.showX());

あなたはやっている

document.write("Value of x is " + x);

そしてその後

document.write(undefined);

p1.showX()返品するのでundefined

しかし、Pointy が指摘したように、特にドキュメントが読み込まれた後は、まったく使用しないでくださいdocument.write

于 2013-10-23T19:52:45.870 に答える
1

交換

document.write(p1.showX());

p1.showX();

最初は未定義の pi1.showX() の結果を出力するためです。

于 2013-10-23T19:53:57.280 に答える
1

これらの関数呼び出しの結果を に渡していますdocument.write()。それらは何も返さないため、「未定義」の結果が得られます。

于 2013-10-23T19:52:53.903 に答える