我今天敲代码遇到了一个令我惊奇的事情,先看我写的代码
<!Doctype html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var name = Array("Tom","Mark","Curry");
for(var count = 0; count < name.length; count++){
alert(name[count]);
};
</script>
</head>
<body>
</body>
</html>
按我想的应该会弹出三条alert消息,分别对应着name的三个名字。其实页面弹出了
为什么会这样,不应该是Tom吗?在我查阅资料后发现:
在javascript中name既不是保留字,也不是关键字,但在window对象中有一个属性是 window.name
window.name 是一个字符串,所以当你声明name变量的时候,相当于给window.name赋值,所以只能为字符串。
解决方法:
name是javascript中windows对象的关键字,你直接在外部使用会默认转成字符串,如果你放到某个函数里面调用就不会有这问题。
<!Doctype html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function solve(){
var name = Array("Tom","Mark","Curry");
for(var count = 0; count < name.length; count++){
alert(name[count]);
};
};
solve();
</script>
</head>
<body>
</body>
</html>