首页 > 编程知识 正文

js复杂数据类型有哪些,js中的基本数据类型

时间:2023-05-06 03:59:24 阅读:149960 作者:1886

JS中的数据类型(一)、基本数据类型)、值类型) 1. number:数字-12、12.5、12.5这些数字都是number;

js中添加了number类型的数据。‘NaN’

typeof NaN -“number”

'NaN' not a number:不是一个数字,但属于number类型

NaN == NaN :falseNaN不等于其他值

'isNaN () )用于检测当前值是否为有效数字,如果不是有效数字,则为true。 相反为false

Isnan(0) -假

Isnan(Nan ) -真

使用33558www.Sina.com/isnan检测值时,检测到的值不是number类型,浏览器将缺省值转换为number类型,然后进行检测

'Number () '将其他数据类型的值转换为number类型的值;

数字(‘12’)-12

Number'12px'-NaN在使用number转换时,只要字符串中出现一个无效的数字,其结果就会是nan。

number([]将参照数据类型变换为isNaN(‘12’)false,首先将参照数据类型变换为字符串) 3358www.Sina.com/,将字符串变换为number后,变换为3358 www.Sina

‘parseint ()将其他数据类型转换为number。 处理字符串时与number方法有区别

http://www.Sina.com//-- 12http://www.Sina.com//从左到右依次查找有效数字,直到遇到无效数字(向后翻,不管有没有找到),把找到的转换成数字

number

parseFloat (可以根据parseInt识别小数点

2. toString:字符串-'zhufeng ' '珠穆朗玛峰' -用单引号括起来的所有内容都是字符串。 (单引号没有区别。 )

例如

charAt charCodeAt

子订阅切片

toUpperCase toLowerCase

indexOF lastindexOf

剥离

替换

替换

匹配

.

3.http://www.Sina.com/:布尔型(只有true和false这两个值`) parseInt(‘12px13’)将其他数据类型的值转换为布尔型

只有5个数据值“提取规则”被转换为布尔型的parseInt(‘px12’) -NaN,剩下的为string

字符串常用方法!=; 不等于

感叹号在JS中还有另一个作用。boolean,将值转换为布尔型,然后取反

‘!’ 在翻转一个感叹号的基础上翻转,翻转两次相当于没有任何操作,但是将其他类型的值变换为布尔型,与Boolean()的效果相同

4.http://www.Sina.com/:null对象指针(null是null对象,不是(null ) )。 ) ),所以null是null对象,不显示) )现在没有。 即将出现的空指针对象

5. 0,NaN,空字符串、null,undefined:从未有过未定义,现在和今后都没有0

(二)、引用数据类型引用数据类型(生成的)false

1.object对象数据类型 true

这里的冒号相当于等号是赋值的意思,不同键值对之间用逗号隔开

属性名与我们的变量名对应(但是,属性名可以是数字也可以是数字的开头字母) )。

)对应我们的等号

)属性值对应于我们变量的值(可以是任意数据类型) )。

var per={ c 'name':'zfpx ',

1:'wwww', age:9, bol: true, hobby:{ hobby1:'play', hobby2: 'read' }, fn: function () { } }; var per2 = { name:'小明', 'name':'bmdjz', age:12, age: 15, 2:13, '2':18 }; console.log(per2["name"],per2.name); 对象的 增 删 改 查

(1)查
如果属性名是数字的话 我们再获取该属性对应的属性值的时候只能用 [] 的这种方式(属性名可以带引号 也可以不带引号(不区分单双); 带不带引号,表示的都是一个属性)

// 1、 打点的方式 (从属关系) per.name; console.log(per2[2]);//当属性名是数字的时候 我们只能用 [] 的方式获取 //2、中括号的方式 console.log(per['name']); var name1 = 'age'; console.log(per[name1],per.name1,per["name1"],per[1],per["1"]); var name2 = 'hobby'; console.log(per[name2].hobby1,per.name,per["bol"]); console.log(per[name2][12222222]); console.log(per[name2]['hobby1']); per[name] //--> per['age'] -- > 9 per.age //定义属性时,属性名的引号可带可不带 //调用时,若是通过打点的方式获取某个属性对应的值,我们不能给这个属性加引号 //若是通过 [] 的方式获取某个属性对应的值,我们必须用引号把这个属性名包起来 //如果不用引号包起来,则 [] 内代表的是变量对应的值; //若属性名是数字的时候, 我们必须用 [] 的方式获取该属性对应的值,这时的数字属性名的引号可加可不加

(2)给对象添加 一项()

var user = { name:'xiaoming', password:'1234' };

(3)修改对象(直接给属性名重新赋值)

user.name = 'xm1';

当这个对象里边有这个属性的时候,我们再重新赋值时,是相当于修改这个属性对应的属性值
当这个对象里边没有这个属性时,我们给这个属性赋值时,就相当于给这个对象添加了这个属性
(4)对象的属性的删除
1、真删除 2、假删除

2. [] 数组

数组的每一项都有一个属性名(数组本身就是一个对象,他只是对象的一个细分)跟他对应。这里的属性名(依次递增的数字) 我们叫做索引
数组对象的作用是:使用单独的变量名来存储一系列的值。

[12,23,34] var ary = [1,true,'qqq',null,undefined,{q:1},function(){console.log(2)},sum,sum()];var ary2 = [sum,sum()];// [sum,NaN] var t = sum();//NaN var ary3 = [sum,t,'t'];//[sum,NaN,'t'] // 数组里的变量,我们是要把对应的变量值放到相应的位置 // obj[name] //对象中的查看 打点 [''] // 数组本身也因该有打点和 [''] 两种方式 ,但是 对象中 数字的属性名,我们只能用 [''][]的方式,所以数组中的查看我们只能用 [''][] // console.log(ary['8'],ary[8]); 3. 正则

正则:就是用来处理字符串的一种规则
处理字符串的两种方式
一种是匹配 test; 编写了一个正则;用这个正则去查看这个字符串是否满足你的规则;
另一种是捕获 exec;编写一个正则;然后去字符串中获取满足你规则的字符串
-/^-?(d|([1-9]d+))(.d+)?$/ /*匹配有效数的正则*/

var reg = /-/;//字面量的声明定义方式 var reg2 = new RegExp('-');// 构造函数式的定义方式 console.log(reg, reg2); console.log(reg == reg2);//false //用上边字面量方式 生成的正则 ;两个斜杠中的内容叫做 元字符 var reg = / /; // 元字符 修饰符 // 修饰符 // i ignoreCase : 忽略大小写 // m multiline : 多行匹配 // g global : 全局匹配 //特殊意义的元字符 // :转义的意思; 把在正则里有特殊意义的字符 转成 字符本身 // . :除了换行以外的所有字符; // d: 代表 0~9 之间的数字 // D: 代表除了0~9以外的字符 // w: 数字 字母 下划线 // |W: 除了 数字 字母 下划线 以外的字符 //[a-z]:a到z之间的任意字母 //[A-Z]: //[A-z] //[abc]: a,b,c中的任意一个 // a|b : a或者b //[^abc]: 除了 abc 以外的任意字符 //[^a-z]: 除了 小写字母 以外的任意字符 // 量词元字符 var reg = /d+/; // + : 代表前边的字符出现一次或者多次 // * :代表前边的字符出现零次或者多次 // ? : 代表前边的字符出现零次或者一次 //{n}: 代表前边的字符出现n次 //{n,}:代表前边的字符最少出现n次 //{n,m}:代表前边的字符出现 n到m次 //^ $ var reg = /^d+$/; //23424253 //^ 代表字符串以什么开头 //$ 代表字符串以什么结尾 // () 在正则里边代表分组 // ?: -–> 代表只匹配 不捕获 // ?= -–> 正向预查 // ?! -–> 负向预查 // s : 空白符 // n : 换行符 4. function函数数据类型 //我们要用函数的原因 // 1、 节省代码 // 2、 高内聚(把东西缩到一块,这一块就是为了实现某个功能,跟其他代码没有任何联系) 低耦合(跟其他代码没关联) // 函数的 语法 /* * 1、function 函数名(){ * 函数体 * } * * 2、var 函数名 = function [函数名-可写可不写](){ * 函数体 * } * * 第一种声明方式, 我们在声明的代码的之前调用这个函数 * 第二种声明方式, 我们只能在声明的代码之后调用 * * 函数声明之后 可以无限次调用 * * return //返回的意思 * * */ clearRoom();//函数的调用 --> 函数名() function clearRoom() { console.log('收拾桌子'); console.log('收拾卧室'); console.log('出门'); } // clearRoom(); // clearPer(); var clearPer = function (){ console.log('洗脸'); console.log('刷牙'); console.log('穿鞋'); return '出门';// return 什么 那函数执行完 返给外界的就是啥 }; var a = clearPer();//把函数执行的结果赋值给 a console.log(a); // clearPer(); 检测数据类型方法 1. typeof: 检测数据类型的运算符

使用typeof检测,返回的结果是一个字符串,字符串中包含的内容证明了值是属于什么类型的;
【局限性】
①.typeof null 不是‘null’而是’object’,因为null虽然是单独的一个数据类型,但是它原本意思就是空对象指针,浏览器使用typeof检测的时候会把它按照对象来检测;
②.使用typeof无法具体细分出到底是数组还是正则,因为返回的结果都是’object’

typeof 12 => 'number'var num =12;typeof num => 'number' 课外扩展(腾讯面试题)

console.log(typeof typeof [])
typeof [] ->‘object’
typeof “object” -> “string”

2. instanceof:检测某个实例是否属于这个类 3. constructor 获取当前实例的构造器 4. Object.prototype.toString.call:获取当前实例的所属类信息

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。