Javascript强制变量为字符串为什么?
考虑下面的代码Javascript强制变量为字符串为什么?,javascript,Javascript,考虑下面的代码 <!DOCTYPE html> <html> <head> <script> var name = 0; while ( name < 6 ) { console.log('Masha'); name = name + 1; console.log(name); } </script> </he
<!DOCTYPE html>
<html>
<head>
<script>
var name = 0;
while ( name < 6 ) {
console.log('Masha');
name = name + 1;
console.log(name);
}
</script>
</head>
<body>
</body>
</html>
相反,我得到了
Masha
name.html:9 01
name.html:7 Masha
name.html:9 011
为什么会这样?如果我直接复制/粘贴代码,也会发生这种情况。如果我把name
的n
切掉,那么它就行了。如果我将变量更改为myName
,它确实有效。为什么它被强制为字符串?我正在使用Chrome的版本57.0.2987.133(64位)
。Firefox52.0.2(64位)
中也会出现这种情况
在node或Internet Explorer中运行代码时不会发生这种情况
因为您正在浏览器的全局范围内使用
名称。浏览器已经有一个内置的名称
全局(特别是窗口的名称
,它是窗口的名称),它始终是一个字符串。要么:
请使用其他名称或更好的名称:
不要使用全局搜索
这是一个很好的例子,说明了为什么不使用全局变量是一个好主意。:-)
下面是#2的一个例子:
(函数(){
var name=0;
while(名称<6){
console.log('Masha');
name=name+1;
console.log(名称);
}
})();代码>,因为您正在浏览器的全局范围内使用name
。浏览器已经有一个内置的名称
全局(特别是窗口的名称
,它是窗口的名称),它始终是一个字符串。要么:
请使用其他名称或更好的名称:
不要使用全局搜索
这是一个很好的例子,说明了为什么不使用全局变量是一个好主意。:-)
下面是#2的一个例子:
(函数(){
var name=0;
while(名称<6){
console.log('Masha');
name=name+1;
console.log(名称);
}
})();代码>在这里检查答案为双重张贴道歉。在这里检查答案为双重张贴道歉。
Masha
name.html:9 01
name.html:7 Masha
name.html:9 011