0

未定義の変数エラーに問題があります。これは私のコードです:

window.sys.Bash = {};
window.sys.Bash.version = "";
window.sys.Bash.version.major = 0;
window.sys.Bash.version.minor = 1;
window.sys.Bash.version.build = 1;
window.sys.Bash.version.release = "beta";
window.sys.Bash.printing = false;
window.sys.Bash.queue = Array();
window.sys.Bash.span = bash;
window.sys.Bash.span.input = input;

window.sys.Bash.version = ""
    + window.sys.Bash.version.major + "."
    + window.sys.Bash.version.minor + "."
    + Array(2-window.sys.Bash.version.build.toString().length+1).join('0')
    + window.sys.Bash.version.build + "-"
    + window.sys.Bash.version.release + " "
    + "(x86_64-" + window.sys.platform + ")";

delete bash; delete input;

私のWebコンソールによると、window.sys.Bash.version.buildは次の行では未定義です。

    + Array(2-window.sys.Bash.version.build.toString().length+1).join('0')

ここからコードをコピーしたので、よくわかりませんが、うまくいくはずですよね?

4

1 に答える 1

4

versionオブジェクトではなく、プリミティブとして定義しました。これを試して:

window.sys.Bash.version = {};
window.sys.Bash.version.major = 0;
window.sys.Bash.version.minor = 1;
window.sys.Bash.version.build = 1;

プリミティブにプロパティを追加することはエラーではありませんが、プロパティは一時オブジェクトに追加され、その後失われます。基本的に、これは起こりました:

window.sys.Bash.version = "";
new String(window.sys.Bash.version).major = 0;
new String(window.sys.Bash.version).minor = 1;
new String(window.sys.Bash.version).build = 1;

これはここで説明されています:

OをToObject(base)とします。

これは実質的にと同じでObject(str)あり、これは実質的にと同じですnew String(str)

于 2012-12-18T20:07:49.877 に答える