Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript强制变量为字符串为什么?_Javascript - Fatal编程技术网

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位)
。Firefox
52.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