JS基础数据类型及判断

编程入门 行业动态 更新时间:2024-10-24 16:23:13

JS基础<a href=https://www.elefans.com/category/jswz/34/1768302.html style=数据类型及判断"/>

JS基础数据类型及判断

js基础(弱类型语言—>不必事先声明数据类型)

js数据类型

  1. 基础类型:number、string、boolean、null、undefined、symbol、bigInt(基础数据类型无原型)
  2. 引用数据类型: object包含object、array、function、date

数据类型判方法:

1、typeof判断
  • 可判断出除null(null判断为object)外的基础类型(包含:String、Number、Boolean、undefined、symbol、bigint)
  • 对非基本类型只可判断出function,其他(new Date、Array、null、{}、[]、)都是object
2、instanceof判断

语法:object instanceof constructor
原理:instanceof 运算符用于测试构造函数(constructor)的 prototype 属性是否存在于实例对象(object)的原型链上,如存在,则返回 true。

  • (不适用于基础数据类型,因为基础数据类型没有构造器,存储在栈中)
  • instanceof运算符会沿着对象的原型链向上查找,直到找到构造函数的原型或者到达原型链的末端
// 手写instanceof
function myInstanceof(obj,constructor){// Obejct.getPrototypeOf作用:获取指定对象的原型(内部​​[[Prototype]]​​属性的值),如果没有继承属性,则返回 null let proto = Obejct.getPrototypeOf(obj);while(proto !== null){if(proto === constructor.prototype){return true;}proto = Object.getPrototypeOf(proto);}return false;
}

题外话: Object.setPrototypeOf():为现有对象设置原型,返回一个新对象;
接收两个参数:第一个是现有对象,第二是原型对象。

3、万能判断法:Object.prototype.toString.call()
eg: Object.prototype.toString.call(10) ---> '[object Number]'
4、constructor判断:不稳定,不建议使用,undefined/null使用时会报错

题外话:
防御性编程:即foo.list && foo.list instanceof Array && foo.list.forEach(() =>{…});

隐式转换规则:
1、+ 加其他类型= string
2、+ 两边都是NAN时结果为NAN,undefined转为NAN
3、 NAN为Number类型, —> perferredType—感兴趣可看
4、Infinity + Infinity= infinity(无穷大);
5、infinity + (-infinity)= NaN
6、对象在转换基本类型时,会调用对象上的valueof()或toStrng()方法,该方法的返回值为基本类型的结果,内置函数toPrimitive;

Js的引用与拷贝:
基本数据类型: 占用空间小,大小固定,频繁使用,保存在栈中
引用数据类型:占用空间较大,大小不固定,保存在堆中

Object.assign:
const bar ={a: 1}; const foo = {a:10,b:20};
Object.assign(bar,foo) —-> {a:1, b:20} === bar
返回值为第一个参数,浅层拷贝、值拷贝

深浅拷贝: 拷贝时地址拷贝到哪一层,第一层还是第n层

参考:

更多推荐

JS基础数据类型及判断

本文发布于:2023-11-15 19:54:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1605375.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据类型   基础   JS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!