【数据类型】js的数据类型
栏目: JavaScript · 发布时间: 6年前
内容简介:基本数据类型包括:undefined, null,boolean,number,string引用类型是object:包括function,array,Date...【es6新增类型】
一、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。
- 数组转数字,如果数组长度大于1,返回NaN;数组只有一项,对第一项转数字;
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python中不可变数据类型和可变数据类型
- 重学JS: 数据类型及类型检测
- JS专题之数据类型和类型检测
- 6. Go 语言数据类型:字典与布尔类型
- Redis 入门-数据类型:3 种特殊类型详解
- Go 语言函数式编程系列教程(七) —— 数据类型篇:基本数据类型之间的转化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从界面到网络空间
(美)海姆 / 金吾伦/刘钢 / 上海科技教育出版社 / 2000-7 / 16.40元
计算机急剧改变了20世纪的生活。今天,我们凭借遍及全球的计算机网络加速了过去以广播、报纸和电视形式进行的交流。思想风驰电掣般在全球翻飞。仅在角落中潜伏着已完善的虚拟实在。在虚拟实在吕,我们能将自己沉浸于感官模拟,不仅对现实世界,也对假想世界。当我们开始在真实世界与虚拟世界之间转换时,迈克尔·海姆问,我们对实在的感觉如何改变?在〈从界面到网络空间〉中,海姆探讨了这一问题,以及信息时代其他哲学问题。他......一起来看看 《从界面到网络空间》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
RGB CMYK 转换工具
RGB CMYK 互转工具