Javascript 浏览器和终端(节点)中的console.log(typeof)

Javascript 浏览器和终端(节点)中的console.log(typeof),javascript,html,node.js,Javascript,Html,Node.js,在终端中使用节点运行sample.js文件时 var name = 12; console.log( typeof name ) //number 但在浏览器控制台中是不同的 var name = 12; console.log( typeof name ) //string 为什么会有差异 name是的属性和字符串 当您在控制台中设置name时,实际上是在设置window.name的值,该值被转换为字符串,如文档中所述: window.name将使用toString方法将所有值转换为其字符

在终端中使用节点运行sample.js文件时

var name = 12;
console.log( typeof name )
//number
但在浏览器控制台中是不同的

var name = 12;
console.log( typeof name )
//string

为什么会有差异

name
是的属性和字符串

当您在控制台中设置
name
时,实际上是在设置
window.name
的值,该值被转换为字符串,如文档中所述:

window.name将使用toString方法将所有值转换为其字符串表示形式

之所以会出现这种情况,是因为您正在这样设置名称:

var name=12;
在浏览器中使用
var name=
,而不使用任何其他作用域,与编写
window.name=
相同

但是,如果要使用
const
let
声明
名称
,则
名称
将不适用于全局范围,即
窗口
,它将是预期的类型:

const name=4;
console.log(名称类型)
MDN