javascript - 理解 Javascript Typeof

标签 javascript node.js variables undefined

当我执行下面的代码时,它打印“未定义”两次。 我预计它会引发错误,因为变量未定义,并且顶部还有 use strict' 语句。

'use strict';
var a;

console.log(typeof a);
console.log(typeof b);

谁能解释一下为什么它没有引发错误?

最佳答案

事实上,在 JavaScript 中 undefined 意味着变量尚未定义,所以基本上:

  • typeof a 返回 undefined,因为变量 a 仅被声明但尚未初始化(没有为其分配任何值) .

  • 并且 typeof b 返回 undefined,因为变量 b 尚未声明,因此尚未定义。

如果没有为变量分配任何值,它的类型就会为 undefined,因为无法确定 as 类型。

因此,如果您检查 MDN typeof specification 你会看到:

The typeof operator returns a string indicating the type of the unevaluated operand, and if you see types table you can see that undefined is a primitive type and one of the possible return values of typeof.

示例:

您可以在示例部分中看到未定义的返回:

// Undefined

typeof undefined === 'undefined';

typeof declaredButUndefinedVariable === 'undefined';

typeof undeclaredVariable === 'undefined';

注意:

正如评论中所述,这仅与 JavaScript 语法有关,与 Nodejs 没有任何关系。

关于javascript - 理解 Javascript Typeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594660/

相关文章:

javascript - 美元符号 ("$") 不是函数

javascript - Vue Canvas $ref 未在调整大小时定义。抛出错误但作品似乎仍然有效?

javascript - 使用 mqtt.js 和 Mosca 的离线消息问题

jquery - 给jquery中的变量赋值

javascript - 使用 javaScript 反转数组的一部分

javascript - JS 定位元素正上方的类

javascript - 使用 NodeJS 和 Sequelize 进行控制流

node.js - 从 Typescript 类定义 ExpressJS 路由

Javascript html canvas变量作为颜色alpha channel

variables - Gradle 任务中额外属性和变量之间的区别?