js数据类型及检测方法

python爬取淘宝数据 python爬取淘宝数据淘宝评论 淘宝评论 打开淘宝,选择打开需要爬取的商品的评论。在谷歌浏览器选择开发者工具,选择network,找到list_detail_rate.htm?itemId=624466733121,点击headers、previews,可以看见相应的评论数据。 爬取一页屏评论代码如下 import re import requests headers = { 'Referer': '在headers中', 'User-Agent': '在 阅读详情

一、数据类型检测方法
在js中,有四种用于检测数据类型的方式,分别是:

typeof  用来检测数据类型的运算符
instanceof    检测一个实例是否属于某个类
constructor   构造函数
Object.prototype.toString.call()  原型链上的Object对象的toString方法
下面我们就来分别介绍一下上面四种方法的适用场景和局限性。

1.typeof 用来检测数据类型的运算符
使用typeof检测数据类型,返回值是字符串格式。能够返回的数据类型有6种

是:“number”,“string”,“bolean”,“undefined”,“function”,“object”。

<script>
  console.log(typeof(1));  //number
  console.log(typeof('hello'));  //string
  console.log(typeof(true));  //boolean
  console.log(typeof(undefined));  //undefined
  console.log(typeof(null));  //object
  console.log(typeof({}));  //object
  console.log(typeof(function() {}));  //function
</script>

局限性:

typeof (null); //“object”。这是由于在js中,null值表示一个空对象指针,而这也正是使用typeof操作 符检测null值时会返回"object"的原因(笔试面试常考)
不能具体的细分是数组还是正则,还是对象中其他的值,因为使用typeof检测数据类型,对于对象数据类型的所有的值,最后返回的都是"object"

2.instanceof 检测某一个实例是否属于某个类
instanceof主要用来弥补typeof不能检测具体属于哪个对象的局限性。

<script>
  let arr = [1,2,3];
  let reg = /\w/;
  console.log(arr instanceof Array);  //true
  console.log(arr instanceof Object);  //true
  console.log(reg instanceof RegExp);  //true
  console.log(reg instanceof Object);  //true
</script>

局限性:

不能用于检测和处理字面量方式创建出来的基本数据类型值,即原始数据类型
instanceof的特性:只要在当前实例的原型链上的对象,我们用其检测出来都为true
在类的原型继承中,我们最后检测出来的结果未必正确

3.constructor 构造函数
是函数原型上的属性,该属性指向的是构造函数本身。
作用和instsnceof非常相似,与instanceof不同的是,不仅可以处理引用数据类型,还可以处理原始数据类型。

<script>
  let num = 12;
  let obj = {};
  console.log(num.constructor == Number);//true
  console.log(obj.constructor == Object);//true
</script>

但是要注意一点的是,当直接用(对象字面量或原始数据).constructor时,最好加上()。为了便于理解,我们来看一个例子。

<script>
  1.constructor === Number;    //报错,Invalid or unexceped token
  (1).constructor === Number;    //true
  {}.constructor === Number;    //报错,Invalid or unexceped token
  ({}).constructor === Number;  //true
</script>

这主要是由于js内部解析方式造成的,js会把1.constructor解析成小数,这显然是不合理的,小数点后应该是数字,因此就会引发报错。js会把{}解析成语句块来执行,这时后面出现一个小数点显然也是不合理的,因此也会报错。为了解决这个问题,我们可以为表达式加上()使js能够正确解析。

局限性:我们可以把类的原型进行重写,在重写的过程中很可能把之前constructor给覆盖了,这样检测出来的结果就是不准确的

<script>
   function Fn() {};
  Fn.prototype = new Array;
  var f = new Fn;
  //f是一个函数,按道理说他的构造函数应该是Function,但是修改其原型链后,它的constructor变成了Array.
  console.log(f.constructor == Array);  //true
</script>

4.Object.prototype.toString.call() 原型链上的Object对象的toString方法
Object.prototype.toString的作用是返回当前方法的执行主体(方法中的this)所属类的详细信息,是最全面也是最常用的检测数据类型的方式。
返回值的类型为string类型。

<script> 
  console.log(Object.prototype.toString.call(1));          //[object Number]
  console.log(Object.prototype.toString.call(/^sf/));        //[object RegExp]
  console.log(Object.prototype.toString.call("hello"));      //[object String]
  console.log(Object.prototype.toString.call(true));        //[object Boolean]
  console.log(Object.prototype.toString.call(null));        //[object Null]
  console.log(Object.prototype.toString.call(undefined));      //[object Undefined]
  console.log(Object.prototype.toString.call(function() {}));    //[object Function]
  console.log(typeof(Object.prototype.toString.call(function() {})));    //string
</script>

二、数据类型
栈 :栈,只允许在一段进行插入或者删除操作的线性表,是一种先进后出的数据结构。
堆 :堆是基于散列算法的数据结构。
队列:队列是一种先进先出(FIFO)的数据结构。
JavaScript中将数据类型分为基本数据类型和引用数据类型,它们其中有一个区别就是存储的位置不同。
a.我们都知道JavaScript中的基本数据类型有:

String
Number
Boolean
Undefined
Null
Symbol(暂时不管)

基本数据类型都是一些简单的数据段,它们是存储在栈内存中。
b.JavaScript中的引用数据类型有:

Array
Object

引用数据类型是保存在堆内存中的,然后再栈内存中保存一个对堆内存中实际对象的引用。所以,JavaScript中对引用数据类型的操作都是操作对象的引用而不是实际的对象。

可以理解为,栈内存中保存了一个地址,这个地址和堆内存中的实际值是相关的。
c.图解 (可以通过下图来表示数据类型在内存中的存储情况):

var name="axuebin";
var age=25;
var job;
var arr=[1,2,3];
var obj={age:25};

在这里插入图片描述

此时name,age,job三种基本数据类型是直接存在栈内存中的,而arr,obj在栈内存中只是存了一个地址来表示对堆内存中的引用。
d.复制

基本数据类型

对于基本数据类型,如果进行复制,系统会自动为新的变量在栈内存中分配一个新值,很容易理解。

引用数据类型

如果对于数组、对象这样的引用数据类型而言,复制的时候就会有所区别了:

系统也会自动为新的变量在栈内存中分配一个值,但这个值仅仅是一个地址。也就是说,复制出来的变量和原有的变量具有相同的地址值,指向堆内存中的同一个对象。
在这里插入图片描述

当我修改obj或objCopy时,都会引起另一个变量的改变。

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设) 阅读详情

相关推荐

GT-Power柴油机瞬态性能仿真与优化——基于EGR-VGT耦合控制策略【附案例】

本文探讨了GT-Power在柴油机瞬态性能仿真与优化中的应用,重点分析了EGR-VGT耦合控制策略的实际效果。通过案例研究展示了如何通过仿真优化提升柴油机的动力响应速度和排放性能,为车辆工程领域的工程师提供了实用的技术参考。

green的博客 763

检测数据类型的几种方法

检测数据类型的几种方法 1.ECMAscript 中规定的数据类型有: 1) 简单类型:String、Number、Boolean、Undefined、Null、Symbol 2)引用(复杂)类型:Object 检测这些数据的类型的方法有: 第一种:typeof 可以检测一些基本的数据类型 语法:typeof 后面加不加括号都是可以用的 注意:正则、{}、[]、null输出结果为objec...

lixianwen007的博客 3278

比较几款国际主流的电子元器件及物料清单管理软件 – 工具汇总

Arenasolution 老牌的基于云计算物料清单管理软件,bom.com就是他们家的,10天免费试用,功能被分成4个不同的产品, 和传统ERP功能上有重叠,偏向于物流生产规划,一定程度可以取代ERP的生产规划模块,平均价格70美元/月/席位。网页客户端,不支持离线   SiliconExpert 曾经的老牌物料清单管理软件,后被Arrow 收购,14天免费试用,功能被分成4个不同的产品

u012062784的专栏 7235

JavaScript判断数据类型

JavaScript判断数据类型

欢迎观看我的前端知识合集~ 625

基于毫米波雷达的智能风扇算法设计与实现

摘要:本文设计了一种基于毫米波雷达的智能风扇控制系统,采用FMCW雷达实现人体目标的精准检测与定位。系统通过距离FFT、速度FFT、CFAR检测和AoA估计构建完整的信号处理链路,并针对风扇叶片干扰设计了基于自相关函数的抗干扰算法。创新性地提出了人在开机、多人优先送风、摇头追踪等控制策略。研究采用MATLAB完成全链路算法仿真验证,并在STM32平台上实现实物系统。实验表明,该系统可实现0.15m测距精度和±60°方位角覆盖,有效解决了传统风扇的能源浪费和用户体验问题。本文提供了完整的MATLAB仿真代码和

huanghm88的专栏 403

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

算法大师! 526

js检测数据类型的几种方法总结

当我们把Array自身的toString()方法删除之后,再次使用它时,由原型链它会向上查找这个方法,即Object的toString(),也便将Object上的toString()方法作用在数组上,得出其数据类型[object Array]这里声明了一个Fn的构造函数,并且把他的原型指向了Array的原型,所以这种情况下,constructor也显得力不从心了。因此,在想要得到对象的具体类型时,应该调用。方法(返回对象的具体类型),所以采用。来判断类型看起来是完美的,然而,方法时,根据原型链的知识,

猫老板的豆 2505

如何通过 GitHub Actions 使用 SSH 自动化部署到阿里云 ECS 实例

通过 GitHub Actions 和 SSH 自动化部署,可以显著提高你的开发效率和部署的可靠性。本文介绍了如何生成 SSH 密钥、将公钥添加到阿里云 ECS 实例、将私钥添加到 GitHub Secrets,以及编写 GitHub Actions 工作流来实现自动化部署。希望这篇文章对你有所帮助!

吃面不喝汤的博客 1511

JavaScript搞定数据类型检测的三种方法

Js的数据类型检测在实际开发项目过程中会经常遇到,这里边存在很多坑,比如我们初学Js的时候可能只知道判断数据类型一个typeof就完事大吉了,其实还有一个instanceof,你以为的这两种就够用了吗?就能准确判断每种数据类型了吗?不会,还有很多坑等着你去跳,今天我们就把这些坑都刨出来给大家看,一起完美避坑! 1. 通过typeof检测 这是我们比较常用的一种类型检测方法,通过一段代码回顾下: typeof 1 // number typeof '1' // st.

CRMEB小程序商城的博客 2459

PX4从放弃到精通(二十二):日志

文章目录前言一、下载日志二、ulog转CSV三、利用flightplot软件分析PX4的ulog日志1 windos安装2 ubuntu18.04安装四、使用PlotJuggler分析PX4日志五、设置日志记录条件六、添加自定义日志消息 前言 PX4 1.10以上固件 QGC 一、下载日志 将飞控链接地面站,在下图页面点击“刷新”,即可看到保存的日志(前提是要有TF卡) 选择需要下载的日志,点击右侧的“下载”,然后选择目录即可进行下载,如果想擦除所有的日志,可以点击右侧的“擦除全部” 二、ulog转CS

超维空间科技的博客 6793

PCL 点到面的ICP算法【2024最新版】

经典的点到面的ICP算法。博客长期更新,本文最新更新时间为:2024年10月18日。

点云侠的博客 36万+

JavaScript 检测数据类型的四种方式

JavaScript 检测数据类型的四种方式 文章目录JavaScript 检测数据类型的四种方式一.typeof1 优点2.缺点二.instanceof1.优点2.缺点三.constructor1.优点2.缺点四.Object.prototype.toString.call()1.优点2.缺点3,扩展 一.typeof typeof操作符返回一个用来表示数据类型的字符串,注意typeof运算之后的结果都是字符串类型的 注意:typeof是一个操作符,不是一个函数! 1.“string” 值是字符串

liuqiao0327的专栏 2677

nvidia系列教程-AGX-Orin linux源码下载编译

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,广泛应用于人工智能、自动驾驶、机器人等领域。为 AGX Orin 编译定制的 Linux 内核,可以更好地适应特定应用需求,增强系统的灵活性。本文将详细介绍如何下载、配置和编译适用于 AGX Orin 的 Linux 内核源码。本文介绍了如何为 NVIDIA AGX Orin 平台下载、配置和编译定制的 Linux 内核源码。通过编译和部署定制内核,您可以更好地控制系统的行为,并根据特定应用需求进行优化。

flypig has a dream! 1283

【JavaScript】JS数据类型检测的方法详解

JavaScript数据类型检测方法全面解析 摘要:本文系统介绍了JavaScript中的数据类型检测方法,包括基础类型与引用类型的存储差异,以及四种核心检测方法:typeof操作符(适合基础类型但存在null误判)、instanceof运算符(专用于引用类型检测)、constructor属性(易受重写影响)和Object.prototype.toString.call()(万能精准检测法)。通过对比表格分析各方法的优缺点,并提供了表单验证、API数据处理等实战案例。

1259

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JS中检测数据类型的7种方法

目录 一.JS中的数据类型: 二、检测数据类型的方法: 1、typeof 检测一些基本的数据类型 2、A instanceof B检测当前实例是否隶属于某各类 3、constructor构造函数 4、hasOwnporperty检测当前属性是否为对象的私有属性 5、is Array判断是否为数组 6、valueOf 7、Object.portotype.toString(最好的) 一.JS中的数据类型: 1) 简单类型:String、Number、Boolean...

王春燕的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

javascript 检测数据类型的方法

【代码】javascript 检测数据类型的方法。

add_L的博客 279

js 数据类型_js中检测数据类型的方法汇总

回顾一下js中数据类型分为两大类,基础类型和引用数据类型,主要有:基本数据类型NumberStringBooleanNullUndefinedSymbol复杂数据类型ArrayFunctionObject检测js中的数据类型常用的方法有:typeofinstanceofObject.prototype.toString对比一下这三种方法的优缺点:typeof方法typeof5 // number...

weixin_39929377的博客 77

javascript检测数据类型的方法

typeof适用于基本数据类型的检查,但对于 null 和数组不够精确。instanceof适用于检查对象是否为特定构造函数的实例。专门用于检测数组。提供了最准确的类型检测方式。用于检测 NaN,避免 isNaN() 的一些陷阱。

qq_48763502的博客 1610

js中检测数据类型的方法及使用

第一种 typeof 一般主要用来检测基本数据类型,因为它检测引用数据类型返回的都是object console.log(typeof "langshen"); // String console.log(typeof 666); // Number console.log(typeof true); // Boolean consol...

LoverNote的博客 237

JS初学关于数据类型的检测方法

作为一名初学JS不到四周的小白,数据类型的检测虽然没有划为重点,也是容易忽视的一个知识点,但是在未来某个地方出现意想不到的作用(可能吧?)。所以就来整理一下到目前为止的关于数据类型的检测方法 1.关于数据类型的种类 一般认为数据类型有6种类: 1.基本数据类型:number string boolean undefined null 2.复杂类型:object 但是在ES6中新增了一种新的原始数据...

qq_39252109的博客 136

Js几种数据类型检测的方法

前言: 最近在做一个项目,碰到一些需要进行数据类型判断的地方,索性就总结一下所有JS检测类型的方法。 先介绍一下JS的数据类型 JS分基础数据类型和复杂数据类型,也叫引用数据类型 基础数据类型: Sting Number Boolean Null Undefined ,以及es6新增的一个Symbol 复杂数据类型: Object 其中包括 Arry,Function,RegExp,Date 判...

qq_35220376的博客 281

检测js数据类型的方法总结

js中数据类型分为两大类,基础类型和引用数据类型,主要有: 基本数据类型 Number String Boolean Null Undefined Symbol 复杂数据类型 Array Function Object 检测js中的数据类型常用的方法有: typeof instanceof Object.prototype.toString 对比一下这三种方法的优缺点: typeof方...

xiaobing_hope的专栏 258

JS中的数据类型检测方法

(来自90分钟让你掌握JavaScript中的数据类型检测原理) JavaScript中提供了三种数据类型检测方法 typeof /* typeof:用来检测数据类型的运算符 用法:typeof [value] @return 返回值是一个字符串,包含对应的数据类型,例如:'number'、'object'、'function'、'undefined'、'boolean'、'symbol'...

buptlhr的博客 363

JavaScript 中检测数据类型的方法有哪些?

typeof:适用于基本数据类型,但null会被错误地识别为object,引用数据类型都会返回object。instanceof:适用于引用数据类型,不适用于基本数据类型,且受原型链影响。:可以检测基本数据类型和引用数据类型,但属性可修改,可能导致不准确。:最准确的方法,适用于所有数据类型。:专门用于检测数组类型。在选择数据类型检测方法时,应根据具体需求和上下文环境来决定使用哪种方法。如果需要高准确性的类型检测,推荐使用方法。

读心悦 697

JS中检测数据类型的方法

目录 typeof instanceof constructor Object.prototype.toString.call(待检测值) 总结 typeof 我们最容易想到的是typeof,但是typeof漏洞很多,我们先打印一下基本数据类型(除null外) let a = 1 let b = "123" let c = false let d = undefined console.log(typeof(a)) cons

YiChan414的博客 3907

JS里检测数据类型4种方法

第一种 1.typeof 1 console.log(typeof ""); 2 console.log(typeof 1); 3 console.log(typeof true); 4 console.log(typeof null); 5 console.log(typeof undefined); 6 console.log(typeof []); 7 console.log(typeof function(){}); 8 console.log(typeof {}); 看看控制台

qq_44993242的博客 1703

JavaScript 检测数据类型的方法

JavaScript 是弱类型语言,对类型没有严格限制,但是在程序中经常需要对类型进行检测和转换,下面介绍一些类型转换和检测的技巧。 1、使用 typeof 检测类型 typeof 运算符专门用来检测值的类型,特别对于原始值有效,而对于对象类型的数据,如数组、对象等,返回的值都是字符串 "object"。一下代码显示使用 typeof 检测数据类型的方法。 alert(typeof 1);...

Yingjieweb 的技术博客 382
上一篇: 原型对象的获取和设置补充
下一篇: es6的一些新特性
文鼎鼎
博客等级 码龄7年 12粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值