【问题标题】:typeof name returns string even though number was assigned即使分配了数字,typeof name 也会返回字符串
【发布时间】:2018-04-11 17:42:01
【问题描述】:

这真的撕裂了我的 JS 概念。这里到底有什么问题?

const NAME = 'chusss';
var name = 123;
console.log(typeof name); // string, wasnt it supposed to print number?
console.log(name); // 123

【问题讨论】:

标签: javascript typeof


【解决方案1】:

name 变量实际上属于 window.name,它允许您设置窗口的名称。

来自MDN

窗口的名称主要用于设置目标 超链接和表单。

下面是这样写的:

不要将值设置为非字符串,因为它的 get 方法会 调用 toString 方法。

因此你总是得到一个返回的字符串。


如果您仍想使用name 变量但不想与window.name 发生冲突,则将您的代码包装在一个立即调用函数表达式 (IIFE) 中并从功能范围。

演示

(function() {
  var name = 123;
  console.log(typeof name);
  console.log(name);
})();

如果您在 node.js 中运行此代码,您将不会观察到该行为,因为 name 不是 global 对象的属性,因此未在全局范围内定义。

【讨论】:

  • 不如说,变量属于DOM。而 node.js 确实——没有——拥有它。比global 对象更好?虽然它在浏览器中是global。并且 - 不 - 由 node.js 中的 global 对象拥有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
相关资源
最近更新 更多