Typeof操作符返回一个非空的字符串
Typeof operator resturns a string than null
我是一个新手。现在我有了这个代码
var name = null;
console.log(typeof name);
但是结果是一个字符串?为什么呢?为什么不是null?
在JavaScript中,null
的数据类型实际上是一个对象,而不是null
。
因此,当你调用typeof时,它将返回一个字符串"undefined"(或"null"),而不是你期望的null
值。
你可以阅读更多关于JavaScript如何处理它的官方规范。
JavaScript值最初表示为标记和值,对象的标记为0,null表示为标准空指针。这会导致typeof对于空值返回0标记的问题。
因此,该语句将始终作为true传递:
typeof null === 'object';
有一个针对这个问题的建议修复,但是它被拒绝了,因为它会导致使用这个"技巧"来验证null的现有代码出现问题。
虽然它返回"null",这纯粹是typeof的方式告诉你它的类型是什么…它实际上并没有返回你测试的类型的类型,明白吗?
测试任何类型,它将返回一个"string", "object"等
这似乎与您在任何地方运行代码的全局变量有关。由于一个长期存在且永远不会修复的错误,null引用的类型被求值为object.
var a = null;
typeof a
// => "object"
然而,在某些环境中,似乎特定的变量名被设置为诸如"null"或"之类的值,这意味着它将计算为字符串
name
//=> "null"
typeof name
//=> "string"
要尝试一下,打开一个javascript控制台,在stackoverflow上输入
name
//=> ""
相关文章:
- NodeJS在一个较大的字符串中获取一个字符串的索引
- Javascript:用while循环在给定的count参数中重复一个字符串
- 如何使用另一个字符串作为模板从字符串中提取数据
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- 我可以使用JS一次使用JSON数组中的一个字符串吗
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- 如何在JavaScript中每隔第n个字符分割一个字符串
- 我需要使用什么语法来向一个对象的成员添加一个临时数组,该成员等同于一个字符串的通用列表
- 使用Jquery从所有元素创建一个字符串
- 在Javascript中截断一个字符串,混淆了最后两个测试字符串
- Javascript使用本地存储,回调对象并用Json更改为一个字符串以用于填充函数
- 将一个字符串数组解析为一个新的数组javascript
- 我可以在两个javascript文件之间传递一个字符串吗?
- 如何拆分一个字符串,然后将它们与另一个字符串匹配
- get没有方法“writefile”,即使输入是一个字符串
- 将 url 中的一个字符串替换为另一个字符串
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- “JSON.parse(str)”返回“意外令牌c”,但str是一个字符串
- 递归查找嵌套数组中的最后一个字符串