基于javascript中的typeof和类型判断(详解)

基于Javascript中的typeof和类型判断(详解)

typeof

typeof 运算符可以用来判断一个变量的数据类型,语法如下:

typeof operand

其中 operand 是需要判断的变量或值。typeof 运算符会返回以下几种类型的字符串值:

  • "undefined":如果 operand 未定义或未声明
  • "boolean":如果 operand 是布尔类型
  • "number":如果 operand 是数值类型(包括整数和浮点数)
  • "string":如果 operand 是字符串类型
  • "symbol":如果 operand 是 Symbol 类型(ES6 新增)
  • "object":如果 operand 是对象类型(包括 null 和数组)
  • "function":如果 operand 是函数类型

以下是一个使用 typeof 判断数据类型的示例:

let value1; // 未定义变量
let value2 = null; // 值为 null 的变量
let value3 = true; // 布尔类型变量
let value4 = 123; // 数值类型变量
let value5 = "hello"; // 字符串类型变量
let value6 = {}; // 空对象
let value7 = []; // 空数组
let value8 = function() {}; // 空函数

console.log(typeof value1); // 输出:"undefined"
console.log(typeof value2); // 输出:"object"
console.log(typeof value3); // 输出:"boolean"
console.log(typeof value4); // 输出:"number"
console.log(typeof value5); // 输出:"string"
console.log(typeof value6); // 输出:"object"
console.log(typeof value7); // 输出:"object"
console.log(typeof value8); // 输出:"function"

需要注意的是, typeof null 返回的是 "object",这是 Javascript 中一个已知的 Bug。

类型判断

在 Javascript 中,除了使用 typeof 运算符之外,还可以使用其他方法来判断一个变量的数据类型,常用的方法包括 instanceof 运算符、Object.prototype.toString 方法等。

instanceof 运算符

instanceof 运算符用来判断一个变量是否为指定类型的实例,语法如下:

object instanceof constructor

其中 object 是需要判断的变量或值,constructor 是要判断的类型(构造函数)。

以下是一个使用 instanceof 判断数据类型的示例:

let value1 = [];
let value2 = {};

console.log(value1 instanceof Array); // 输出:true
console.log(value1 instanceof Object); // 输出:true
console.log(value2 instanceof Array); // 输出:false
console.log(value2 instanceof Object); // 输出:true

需要注意的是, instanceof 运算符的右操作数必须是一个构造函数,而且和左操作数的原型链中至少有一个相同的对象,否则会返回 false

Object.prototype.toString 方法

Object.prototype.toString 方法用来返回一个对象的字符串表示,语法如下:

Object.prototype.toString.call(object)

其中 object 是需要判断的变量或值。

以下是一个使用 Object.prototype.toString 判断数据类型的示例:

let value1 = null;
let value2 = undefined;
let value3 = true;
let value4 = 123;
let value5 = "hello";
let value6 = {};
let value7 = [];
let value8 = function() {};

console.log(Object.prototype.toString.call(value1)); // 输出:"[object Null]"
console.log(Object.prototype.toString.call(value2)); // 输出:"[object Undefined]"
console.log(Object.prototype.toString.call(value3)); // 输出:"[object Boolean]"
console.log(Object.prototype.toString.call(value4)); // 输出:"[object Number]"
console.log(Object.prototype.toString.call(value5)); // 输出:"[object String]"
console.log(Object.prototype.toString.call(value6)); // 输出:"[object Object]"
console.log(Object.prototype.toString.call(value7)); // 输出:"[object Array]"
console.log(Object.prototype.toString.call(value8)); // 输出:"[object Function]"

需要注意的是,Object.prototype.toString 方法返回的字符串包含了变量的数据类型信息,其中 "Null""Undefined""Boolean""Number""String""Object""Array""Function" 等字符串是不能改变的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于javascript中的typeof和类型判断(详解) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JavaScript实现时间范围效果

    实现时间范围效果可以帮助用户快速选择日期,常用于预定、筛选等场景。下面是实现时间范围效果的完整攻略,让我们逐步来实现。 第一步:引入依赖 我们需要引入一个 JavaScript 的日期选择器库。其中,moment.js 是一个自动解析、验证、操作和显示日期和时间的库,非常常用且功能强大。 <!– 引入moment.js和相关的CSS样式表文件 –&…

    JavaScript 2023年5月27日
    00
  • java、springboot 接口导出txt方式

    为了将Java/Spring Boot应用程序中的接口导出为txt文件,可以按照以下步骤进行: 步骤1:创建Controller类 首先需要创建一个Controller类来对外暴露API。Controller类应该在类前面包含@RestController注解。 @RestController public class ApiController { // …

    JavaScript 2023年6月11日
    00
  • ajax 服务器文本框自动填值

    下面我来详细讲解“ajax 服务器文本框自动填值”的完整攻略。 1. 什么是 AJAX? Ajax 是一种用于创建快速动态网页应用程序的技术。通过使用 Ajax,可以实现无刷新更新页面内容,从而提高用户的交互体验。 2. AJAX如何使文本框自动填值? 使用 Ajax 可以通过向服务器发送异步请求,获取服务器返回的数据,并将数据填充到页面中。因此,我们可以通…

    JavaScript 2023年6月11日
    00
  • JS数组求和的几种常见方法总结

    我将为您详细讲解“JS数组求和的几种常见方法总结”的完整攻略。 一、直接求和 使用for循环遍历整个数组,将数组中的元素加起来,最后返回该数组的总和。 function sum(array) { var total = 0; for (var i = 0; i < array.length; i++) { total += array[i]; } re…

    JavaScript 2023年5月27日
    00
  • JS实现刷新网页后之前浏览位置保持不变示例详解

    JS实现刷新网页后之前浏览位置保持不变的功能,主要需要利用HTML5中的History API和Session Storage来实现。 具体过程步骤如下: 1.获取网页当前滚动位置,可以使用JavaScript代码document.documentElement.scrollTop或者document.body.scrollTop来获取当前滚动位置。 let…

    JavaScript 2023年6月11日
    00
  • 比较简单的异步加载JS文件的代码

    异步加载JS文件的代码可以通过以下步骤实现: 创建一个script标签,并设置async属性为true。这将告诉浏览器立即下载JS文件,但不会阻塞页面的渲染。 示例代码: <script async src="path/to/your/js/file.js"></script> 创建一个JavaScript函数,该…

    JavaScript 2023年5月27日
    00
  • JS数组的遍历方式for循环与for…in

    JS数组是常用的数据类型之一,数组中存放着一系列的元素,我们通过数组索引来访问这些元素。JS数组的遍历方式有许多,其中包括for循环和for…in两种方式。 for循环 for循环是JS中最常用的循环语句,用于对数组的元素进行遍历操作。for循环的语法格式如下: for (let i = 0; i < arr.length; i++) { // d…

    JavaScript 2023年5月27日
    00
  • JavaScript内置对象介绍

    JavaScript内置对象介绍 JavaScript是一种高级的、解释型语言,主要用于在Web页面中添加交互行为。它提供了许多内置对象,方便我们在代码中调用对应的方法,从而实现各种功能。本文将介绍JavaScript中一些常用的内置对象。 1. String对象 String对象用于处理字符串。它支持许多字符串操作方法,例如:indexOf、substri…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部