我正在尝试取一个角色并增加或减少它。我正在尝试使用String.fromCharCode
来完成此任务。以下内容适用于控制台
'Na' + String.fromCharCode(78 + n) // n is 2 in this example, can even hard-code it
似乎工作正常并且给了我NaP
,我的代码中的其他内容却给了我Na̎
。
这是正在执行的代码块
if (ifTypes(a, b, 'integer', 'NaN')) { // disregard this, inside code IS executing
console.log("a: " + JSON.stringify(a) + " b: " + JSON.stringify(b));
var n = a[1] === 'NaN' ? b[0] : a[0];
var output = 'Na' + String.fromCharCode(78 + n);
console.log("output: " + output);
return output;
}
从控制台进行验证:
a: [null,"NaN"] b: ["2","integer"]
output: Na̎ // <-- SO's code highlighter is messing that up
是的,如果有人认出我在做什么,我就是ByteIO。如果你想看到这个代码在运行并且可能尝试通读我的控制台输出,我已经得到它implementing the interpreter from xkcd's 1537。只需点击较轻的栏并按Enter键,它就是模拟终端。
我怀疑问题是一些奇怪的ascii / unicode切换。我已经尝试将'Na'
放在String.fromCharCode
内,但它会得到类似的结果。虽然a
应为[NaN, "NaN"]
,但我不认为这是问题所在。我也需要追踪那个错误。
答案 0 :(得分:2)
我认为问题在于您正在添加"2"
和78
,而不是2
和78
。
function print(s) {
document.querySelector("#result").innerHTML += "<pre>" + s + "</pre>";
}
var a = [null, "NaN"];
var b = ["2", "integer"];
var n = a[1] === 'NaN' ? b[0] : a[0];
var output = 'Na' + String.fromCharCode(78 + n);
print("output 1: " + output);
output = 'Na' + String.fromCharCode(78 + (typeof n == "number" ? n : parseInt(n, 10)));
print("output 2: " + output);
&#13;
<div id="result"></div>
&#13;
答案 1 :(得分:1)
var output = 'Na' + String.fromCharCode(78 + n);
是一个字符串,不是整数,所以添加不是你想要的。
更改
var output = 'Na' + String.fromCharCode(78 + parseInt(n));
到
{{1}}