尝试找出动态类型时出错

时间:2016-05-24 20:40:49

标签: javascript arrays

你能指出这段代码中的错误吗?

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

无论我使用什么,它都无法编译,我正在尝试检查它是否会在操作期间更改顶部类型。

2 个答案:

答案 0 :(得分:1)

topreserved 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);