首页 > 编程语言 >我不知道的Javascript

我不知道的Javascript

时间:2024-11-05 10:30:40浏览次数:3  
标签:function Javascript 判断 Object 数据类型 123 typeof 知道

Javascript 数据类型

基本数据类型(存放在栈内存中, 当被引用和拷贝时会复制一个完全相等的变量)

  • Number, String, Boolean, Symbol, Undefined, Null

引用数据类型(对象类型, 存放在堆内存中, 存储的是地址, 当引用和拷贝时,提供的是地址. 有共享地址的特征)

  • Object
    • Array
    • RegExp
    • Date
    • Math
    • Function
  const a = {
    name: "q"
 }
const b = a;
b.name = "b";
console.log(a);// { name: "b" }, 体现了共享引用地址的特点

判断数据类型的方法

typeof

typeof 123; // "number"
typeof "123"; // "string"
typeof ""; // "string"
typeof true; // "boolean"
typeof function(){}; // "function"
typeof Undefined; // "undefined"
typeof null; // "object ", 可以使用=== 来判断 
typeof []; // "object"

instanceof, 判断new 出来的复杂数据类型可以, 判断基本数据类型会有误

"123" instanceof String; // false, 判断不出来
const a = new String('123');
a instanceof String; // true

Object.prototype.toString.call(xx).slice(8, -1)

这个方法应该是很全的了,工作中建议使用此方法判断数据类型

Object.prototype.toString.call("123"); // ['object, Object']
Object.prototype.toString.call("123").slice(8, -1); // 'Object'
function testFunc() {
  console.log(123);
}
const r = Object.prototype.toString.call(testFunc).slice(8, -1);
console.log(r); // "Function"

手写一个实现

function getType(obj) {
  const type = typeof obj;
  if (type !== "object") return type;
  return Object.prototype.toString.call(obj).slice(8, -1);
}

总结

  • typeof 可以判断基本数据类型(null除外),但是在判断引用数据类型中,除了function其他的也无法判断
  • instanceof 可以判断复杂的引用数据类型, 但是不能正确判断基础数据类型

标签:function,Javascript,判断,Object,数据类型,123,typeof,知道
From: https://www.cnblogs.com/gk1314/p/18527284

相关文章

  • 你肯定不知道:Vue多文件上传时拖放操作的优雅处理
            多文件上传是Vue应用的常见操作。操作要求:(1)允许反复拖放多个文件到待上传区域(2)自动过滤掉重复拖放的文件(3)拖放后,形成待上传文件列表的简易缩略图(4)双击文件名,可移去某个文件。具体效果,如下图所示。        我们可将拖放操作设计为一个插件指令dragDro......
  • 第二章 JavaScript操作BOM对象与DOM对象
    一、BOM对象1.BOM模型BOM:浏览器对象模型(BrowserObjectModel)BOM提供了独立于内容的、可以与浏览器窗口进行互动的对象结构BOM可实现功能弹出新的浏览器窗口移动、关闭浏览器窗口以及调整窗口的大小页面的前进、后退2.window对象属性属性名称说明history有关客户......
  • 【JavaScript进阶部分——DOM操作 (节点获取,节点属性修改,节点创建与插入,CSS样式的修改)
    ‌DOM操作‌是指对文档对象模型(DocumentObjectModel,简称DOM)进行增删改查等操作的过程。DOM是一种表示和操作HTML、XML等文档的标准编程接口,它将文档解析为一个由节点和对象(包含属性和方法)组成的集合,开发者可以通过DOM提供的接口来访问和操作文档的各个部分,包括元素、属性、文......
  • 每位开发者必须知道的20个 TypeScript 技巧
    TypeScript是现代JavaScript开发中不可或缺的工具,它提供了类型安全和丰富的特性。许多开发者掌握了基本用法,但还有一些鲜为人知的技巧可以让你的代码更高效、干净且易于维护。接下来,让我们深入探讨每位开发者应该了解的20个TypeScript技巧,附带示例和实用建议!非空类型......
  • 2024/11/4日 日志 关于JavaScript 变量、数据类型、类型转换和流程控制语句的学习
    经过两天的休憩,状态更佳,后面的笔记和学习进度也会加快JavaScript变量、数据类型、类型转换和流程控制语句点击查看代码----变量--JavaScript中用var关键字(variable的缩写)来声明变量--vartest=20;--test="张三":--·JavaScript是一门弱类型语言变量可......
  • 国内FPC厂家——一家企业正在迅速崛起,你知道吗?
     随着智能手机、可穿戴设备、新能源汽车等市场的快速发展,产业对FPC的需求持续增长。对小型化、轻薄化、高可靠性的要求越来越高,而FPC恰好具备这些优点。近些年来,FPC企业在技术创新方面不断取得突破,如采用先进的材料、提升产品性能、优化生产工艺等,以满足市场对高质量FPC的需......
  • clean-code-javascript系列之并发
    使用Promises,不要使用回调回调不够简洁,因为他们会产生过多的嵌套。在ES2015/ES6中,Promises已经是内置的全局类型了,使用它们吧!不好的:require('request').get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin',(requestErr,response)=>{if(requestErr......
  • 老司机网工,你知道跳线和尾纤的区别吗?
    在网络工程的世界里,理解光纤相关的术语和设备是非常重要的。在众多网络连接和布线的组成部分中,跳线(PatchCord)和尾纤(Pigtail)是两个常见却容易混淆的概念。本文将深入探讨这两者的定义、结构、用途、连接方式以及它们在光纤网络中的重要性,以帮助网络工程师更好地理解和应用这......
  • 第一章 JavaScript基础
    1.什么是JavaScriptJavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本语言JavaScript特点向HTML页面中添加交互行为脚本语言,语法和Java类似解释性语言,边执行边解释JavaScript组成ES基础语法DOM操作HTML元素BOM操作浏览器前进,后退,刷新2.JavaScrip......
  • JavaScript(事件监听,点击事件,事件类型:鼠标事件mouseenter,mouseleave,焦点事件focus,blur,
    事件监听目标:能够给DOM元素添加事件监听什么是事件?事件是在编程时系统内发生的动作或者发生的事情比如用户在网页上单击一个按钮什么是事件监听?就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为绑定事件或者注册事件比如鼠标经过显示下拉菜......