你能指出这段代码中的错误吗?
var top = "800px";
var pos = top.indexOf('px');
top = top.substring(0,pos);
console.log(top);
top+=5;
console.log(top);
top+="px";
console.log(top);
无论我使用什么,它都无法编译,我正在尝试检查它是否会在操作期间更改顶部类型。
答案 0 :(得分:1)
top
是reserved variable name,您无法覆盖它指向最顶层的窗口。
只需将变量名称更改为其他名称,例如topPos
,您就可以了:
var topPos = "800px";
var pos = topPos.indexOf('px');
topPos = topPos.substring(0,pos);
console.log(topPos);
topPos+=5;
console.log(topPos);
topPos+="px";
console.log(topPos);
但是,top
仅保留在全局范围中,因此将代码包装在函数中也可以解决问题:
function run() {
var top = "800px";
var pos = top.indexOf('px');
top = top.substring(0,pos);
console.log(top);
top+=5;
console.log(top);
top+="px";
console.log(top);
}
run();
答案 1 :(得分:0)
好的,我做了一些小改动:
top
更改为top1
。这是为了解决这里已经在沙箱中定义top
并且无法使用的事实。top1
之前修改了一行以将5
投射到一个数字,因此我们添加了数字。
var top1 = "800px";
console.log(top1);
var pos = top1.indexOf('px');
top1 = top1.substring(0,pos);
console.log(top1);
// Force top back to being a number
top1 = +top1 + 5;
console.log(top1);
top1+="px";
console.log(top1);