javascript - Array() 内的变量未定义

标签 javascript padleft

我遇到了 undefined variable 错误的问题。这是我的代码:

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')

我从 here 复制了代码,所以我对此了解不多,但它应该有效,对吧?

最佳答案

您将 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;

这是描述的here :

Let O be ToObject(base).

这实际上与Object(str)相同,这实际上与new String(str)相同

关于javascript - Array() 内的变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940633/

相关文章:

javascript - 在 Highcharts 中显示高于零的负 Y 值而不是低于零

javascript - JQuery fadeIn/fadeOut 错误 - fadeTo 工作正常

c# - 'private extern String PadHelper'的源代码在哪里

c# - 尝试用前导空格填充小数

f# - 将int转换为带有前导零的字符串

javascript - 连接已签名的 cookie 解析错误

javascript - 搜索条件的正则表达式

javascript - 如何将javascript中的数字数组转换为字符串?

c# - 如何使用 padleft 表示负整数?