基于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中双向数据绑定详解 双向数据绑定是指数据模型(Model)与视图(View)双方的数据自动进行同步,一方数据的改变会自动反映到另一方。在JavaScript中实现双向数据绑定可以减少代码量及提高开发效率。 实现方式 方式一:脏值检查 脏值检查指的是使用定时器或者计数器,定期去检查数据模型与视图是否同步,若不同步则进行更新。 此方式的实现较…

    JavaScript 2023年6月10日
    00
  • js实现拖拽 闭包函数详细介绍

    JavaScript实现拖拽 闭包函数详细介绍 在网页开发中,经常会遇到需要通过鼠标拖拽来实现一些操作的需求,如拖拽图片、调整界面尺寸等。下面我们以一个实现拖拽的例子来介绍如何使用JavaScript实现拖拽功能,并介绍闭包函数的概念和应用。 实现拖拽的思路 当鼠标按下时,记录下鼠标的位置和拖拽元素的位置。 当鼠标移动时,根据鼠标移动的距离来更新拖拽元素的位…

    JavaScript 2023年6月10日
    00
  • javascript nextSibling 与 getNextElement(node) 使用介绍

    下面我将为你详细讲解“javascript nextSibling 与 getNextElement(node) 使用介绍”的完整攻略。 1.介绍 nextSibling 和 getNextElement(node) 这两个 JavaScript 函数都用于获取某元素的下一个元素节点。不同之处在于,getNextElement(node) 只会返回下一个元素…

    JavaScript 2023年6月10日
    00
  • JS读取XML文件示例代码

    下面是JS读取XML文件的完整攻略。 一、读取XML文件的基本原理 在JS读取XML文件时,可以通过以下步骤实现: 创建一个 XMLHttpRequest对象; 打开文件并发送请求; 监听请求状态; 接收响应; 解析XML数据。 在以上步骤中,创建XMLHttpRequest对象和打开文件并发送请求的方法是固定的,而解析XML数据则需要使用不同的方法,这取决…

    JavaScript 2023年5月27日
    00
  • JS数组push、unshift、pop、shift方法的实现与使用方法示例

    JS数组方法push、unshift、pop、shift实现及使用方法 push方法 push() 方法用于在数组末尾添加一个或多个元素,并返回数组的长度。 语法 arrayObject.push(newelement1,newelement2,….,newelementX) 示例 var fruits = ["Banana", &q…

    JavaScript 2023年5月27日
    00
  • requestAnimationFrame定时动画屏幕刷新率节流示例浅析

    下面我详细讲解一下“requestAnimationFrame定时动画屏幕刷新率节流示例浅析”的攻略。 简介 window.requestAnimationFrame() 是一个 JavaScript 函数,可用于通过浏览器的渲染引擎,来以最佳频率更新显示屏幕上的动画。 在某些情况下,使用 requestAnimationFrame() 可以连续重复执行某个…

    JavaScript 2023年6月11日
    00
  • JS动态添加iframe的代码

    下面详细讲解一下“JS动态添加iframe的代码”的完整攻略。 什么是iframe? iframe (即内嵌框架) 是 HTML 语言中一种非常强大的标签,可以将一个HTML文档文件嵌入到另一个 HTML 文档中,以达到创建分页面的效果。 如何动态添加iframe 在 JavaScript 中,可以通过以下代码,动态地添加 iframe: var ifram…

    JavaScript 2023年6月11日
    00
  • Java 正则表达式学习总结和一些小例子

    Java 正则表达式学习总结和一些小例子 正则表达式是用于字符串匹配和替换的一种表达式语言。Java 中使用 java.util.regex 包来实现正则表达式。这篇文章将会总结 Java 正则表达式的常见语法和使用方法,并且提供一些示例代码来说明这些概念。 Java 正则表达式语法 Java 正则表达式的语法相对复杂,但它也为我们提供了强大的功能和灵活性。…

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