这真的撕裂了我的JS概念。这里有什么问题?
const NAME = 'chusss';
var name = 123;
console.log(typeof name); // string, wasnt it supposed to print number?
console.log(name); // 123
答案 0 :(得分:5)
name
变量实际上属于window.name
,可让您设置窗口的名称。
来自MDN
窗口名称主要用于设置目标 超链接和表格。
进一步向下写道:
不要将值设置为unstring,因为它的get方法会 调用toString方法。
因此,您总是会返回一个字符串。
如果您仍想使用name
变量但不希望与window.name
发生冲突,请将代码包装在立即调用的函数表达式(IIFE)中并从功能范围中受益。
<强>演示强>
(function() {
var name = 123;
console.log(typeof name);
console.log(name);
})();
如果您在 node.js 中运行此代码,则不会发现该行为,因为name
不是global
对象的属性,因此未在全局中定义范围。