题解 | #基本数据类型检测#

基本数据类型检测

https://www.nowcoder.com/practice/7a8d09b2a0d54d9d95b8f47b1f4bbc16

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       /* 填写样式 */
    </style>
</head>

<body>
    <!-- 填写标签 -->
    <script type="text/javascript">
        // 填写JavaScript
        function _typeof(value) {
   return typeof(value)
}
    </script>
</body>

</html>

typeof 运算符和 Object.prototype.toString.call() 方法都可以用来检测变量的类型,但它们之间有一些重要的区别:

typeof 运算符

  1. 简单性typeof 是一个简单的运算符,直接返回一个基本类型的名称。
  2. 基本类型typeof 主要用于检测基本类型,如 undefinedbooleannumberstring 和 symbol
  3. 对象和函数:对于对象(包括数组)和函数,typeof 总是返回 "object" 和 "function"
  4. null:对于 nulltypeof 返回 "object",这是 typeof 的一个已知行为特性。
  5. 性能:一般来说,typeof 的性能较好,因为它是一个内置运算符。

Object.prototype.toString.call()

  1. 复杂性Object.prototype.toString.call() 方法调用 toString 方法,它返回一个表示对象类别的字符串。
  2. 具体类型:它可以更精确地识别特定类型的对象,比如数组、日期、正则表达式等。
  3. null:对于 nullObject.prototype.toString.call(null) 返回 [object Null]
  4. 性能:由于涉及到方法调用,性能可能略低于 typeof
  5. 标准性和一致性Object.prototype.toString.call() 在所有现代浏览器中都遵循 ECMAScript 标准,因此结果更为一致。

示例

以下是 typeofObject.prototype.toString.call() 的一些示例:

javascript深色版本1console.log(typeof undefined); // "undefined"
2console.log(typeof true);      // "boolean"
3console.log(typeof 42);        // "number"
4console.log(typeof "");        // "string"
5console.log(typeof {});        // "object"
6console.log(typeof null);      // "object"
7console.log(typeof []);        // "object"
8console.log(typeof function() {}); // "function"
9
10console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
11console.log(Object.prototype.toString.call(true));      // "[object Boolean]"
12console.log(Object.prototype.toString.call(42));        // "[object Number]"
13console.log(Object.prototype.toString.call(""));        // "[object String]"
14console.log(Object.prototype.toString.call({}));        // "[object Object]"
15console.log(Object.prototype.toString.call(null));      // "[object Null]"
16console.log(Object.prototype.toString.call([]));        // "[object Array]"
17console.log(Object.prototype.toString.call(function() {})); // "[object Function]"

使用场景

  • 当你需要快速判断一个值是否为基本类型时,可以使用 typeof
  • 当你需要更详细的类型信息,特别是需要区分数组、日期等特定对象类型时,使用 Object.prototype.toString.call() 更合适。
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务