资讯专栏INFORMATION COLUMN

【数据类型】js的数据类型

geekzhou / 667人阅读

摘要:一的数据类型有基本数据类型和引用类型基本数据类型包括引用类型是包括新增类型集合,区别于数组的就是中不可以有重复的数据,常可以用来做去重操作含有属性,集合里元素的个数方法,返回的是原对象改变后的值方法,返回值是返回值是类型,与对象的区别是对象

一、js的数据类型有基本数据类型和引用类型

基本数据类型包括:undefined, null,boolean,number,string
引用类型是object:包括function,array,Date...

【es6新增类型】
1. set 集合,区别于数组的就是 set中不可以有重复的数据,常可以用来做去重操作

含有size属性,集合里元素的个数

add 方法,返回的是原对象改变后的值

delete方法,返回值是true/false

has("data1") 返回值是true/false

myset.keys(); myset.value()

2. Map类型,与对象的区别是:对象的键值只能是字符串,不可以是对象类型,使用Map类型可以避免键值必须是字符串的限制,可以是对象,数组等

创建的时候一个大的数组,每一项元素是小数组,小数组有两个元素,分别是一组对应的key,value。

方法:

set(key,value); get(key);

delete(key); has(key); //返回值均是true/false

mymap.forEach(function (value,key) {
console.log(key+":"+value);
}) // 遍历,参数是value,key 【注意顺序】

mymap.set({},"obj1");

mymap.set({},"obj2"); 这是两个不同的键值,不会被覆盖

3.Symbol类型 用相同的字符串做属性名命名的时候会发生命名冲突,使用Symbol产生的名字是不同的

Symbol 即便传入相同的参数,两者的值也是不一样的 例:Symbol("foo") !== Symbol("foo");

如果想让两者相等,可以使用Symbol.for() 例 Symbol.for("bar") === Symbol.for("bar")

但是 Symbol("bar") !== Symbol.for("bar");
如果Symbol作为属性名,不会被Object.keys() Object.getOwnPropertyNames()、JSON.stringify()返回;该属性也不会出现在for...in、for...of循环中。但是,它也不是私有属性,有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有 Symbol 属性名。

typeof null返回值是 “object”,null会被认为是一个空对象的引用
null == undefined //true
当定义一个变量用来保存对象,就可以将这个变量初始化为null

实现继承
function Person(){}
function Student(){}
Student.prototype = new Person()
Student.prototype.constructor= Student
var bosn= new Student()
bosn instanceof Student //true
bosn instanceof Person // true

二、判断类型的方式

typeof | instanceof | Object.prototype.toString.apply()

typeof: 适用于基本类型和function,object具体是数组还是对象识别不了,null也是别不了

typeof [1,2]   // "object"
typeof "123"   //"string"
typeof null     // "object"
typeof undefined  //"undefined"
typeof function(){}   //"function"
typeof new Object()  //"object"

instanceof: 适合自定义对象和原生对象,检查prototype

 [1,2] instanceof Array  //true

Object.prototype.toString.apply() 适合基本对象和内置对象,IE6、7、9中null和undefined 失效

三、空数组的问题
   [] == false   //true        任意值与布尔值比较,都会将两边的值转化为Number; Number([]) 为0    Number(false)也是0    所以[] == false 为true
   [] ==![]     // true          Number([]) = 0;  Number(![]) = 0 ;   所以 []==![] 为true
   new Array(1) == false;  //true    new Array(1)==> [empty]  ,  Number(new Array(1)) = 0   
   Boolean([])   //true
   if([]){console.log(1)}  //此时[] 是true
   NaN == NaN  // false   
   null == undefined  //true
四、Number强制转换数字

如果参数是Date对象,Number()会返回从1970年1月1日至今的毫秒数

如果字符串截去开头和结尾的空白字符后,不是纯数字字符串,那么最终返回结果为NaN。

Number转对象

1.先调用对象自身的valueOf方法。如果返回原始类型的值,则直接对该值使用Number函数,返回结果。
2.如果valueOf返回的还是对象,继续调用对象自身的toString方法。如果toString返回原始类型的值,则对该值使用Number函数,返回结果。
3.如果toString返回的还是对象,报错。

Number([1]); //1
转换演变:
[1].valueOf(); // [1];
[1].toString(); // "1";
Number("1"); //1

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109910.html

相关文章

  • JS数据类型、内置对象、包装类型对象、typeof关系

    摘要:平时在复习基础知识时,经常会遇到数据类型基础数据类型内置对象包装类型对象,检测数据类型时,用到的值,感觉都差不多,但是又有差异。值与数据类型关系对比下图,即可知值相较于基础数据类型少多 平时在复习JS基础知识时,经常会遇到JS数据类型、基础数据类型、内置对象、包装类型对象,检测数据类型时,用到的typeof值,感觉都差不多,但是又有差异。今天特地整理下,方便理解。 JS数据类型 基础数...

    OldPanda 评论0 收藏0
  • 33 个 js 核心概念(二):数据类型

    摘要:举个例子在上面的例子可以看到,我们声明是一个数字,但是我们在之后将的值又改成了字符串和布尔值后面会讲这些类型。基本类型字符串表示一个字符串,如。因此,我们可以写一个函数,用来精确检测类型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定义 1. 什么是数据类型? 数据类型,就是将...

    QiShare 评论0 收藏0
  • JS基础】初谈JS现有数据类型

    摘要:相当于相当于相当于基础类型不属于包装的对象类型小结数据类型是每一个语言的基础由于属于弱类型脚本语言因此数据只有在赋值后才能直到变量的数据类型下一次我们具体介绍对象的概念 前言 在《你所不知道的javascript上篇》书籍 以及《javascript权威指南》等书籍里面, 均有介绍js的数据类型,对象,原型,继承。结合工作经验, 以及借用一些开源库和框架的源码, 进行一次梳理。 首先介...

    xeblog 评论0 收藏0
  • JS专题之数据类型类型检测

    摘要:运算符可以用来检测某个构造函数的属性是否存在于另外一个要检测对象的原型链上。使用方法可以获取到变量的准确的数据类型就能解决基本包装类型的检测错误和的检测不安全。 本文共 1750 字,读完只需 7 分钟 数据类型有哪些? ECMAScript 的数据类型分为简单数据类型(也被称为基本数据类型,原始数据类型): Undefined Null String Number Boolean ...

    since1986 评论0 收藏0
  • JavaScript入门

    摘要:介绍编程数据结构,算法,内存分配表单验证需要一门语言可以直接运行在浏览器中,来完成表单验证的功能。 Javascript介绍编程(数据结构,算法,内存分配)表单验证 需要一门语言可以直接运行在浏览器中,来完成表单验证的功能。 浏览器厂商 网景 firefox js 标准 js解释器 IE js js解释器 google js j...

    wangdai 评论0 收藏0
  • javascript --- 数据类型

    摘要:其他字符可以是字母下划线美元符号或数字。在使用声明变量,但没有对其初始化时,这个变量的值就是。从逻辑上思考,他们的值,一个是,一个报错他们的类型,却都是。这时,可以采用变量的类型进行比较。类型有两个值字面量和。 javascript 数据类型 javascript由于nodejs的出现将触角延伸至各个开发领域, 也由于 ES6等后续版本的推出对程序员越来越友好, 收到程序员的强烈推崇,...

    darcrand 评论0 收藏0

发表评论

0条评论

geekzhou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<