ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...
JS中的数据类型
(一)、基本数据类型(值类型)
1.number:数字
-12、12.5、-12.5 0这些数字都是number;
js中增加了一个number类型的数据:‘NaN’
typeof NaN ->“number”
①"NaN"
not a number:不是一个数,但是属于number类型NaN == NaN :false NaN和任何其它值都不相等
②"isNaN() "
用来检测当前这个值是否是有效数字,如果不是有效数字,检测的结果是true;反之为false
isNaN(0)->false
isNaN(NaN)->trueisNaN(‘12’)–>false 当我们使用isNaN检测值的时候,检测的值不是number类型的,浏览器会默认的把值转化为number类型,然后再去检测
③"Number()"
把其它数据类型值转化为number类型的值;
Number(‘12’) ->12
Number(‘12px’) ->NaN 在使用Number转换的时候只要字符串中出现一个非有效数字字符,最后结果都是NaN;
④Number([])
把引用数据类型转换为number,首先把引用数据类型转换为字符串(toString),在把字符串转换为number即可 例如:[]->’’ ‘’->0
⑤ ‘parseInt()’
把其它数据类型转换为number,和Number方法在处理字符串的时候有区别
parseInt(‘12px13’) -->12 提取规则:从左到右依次查找有效数字字符,直到遇见非有效数字字符为止(不管后面是否还,有都不找了),把找到的转换为数字parseInt(‘px12’) ->NaN
⑥parseFloat()
在parseInt的基础上可以识别小数点
2. string:字符串
-'zhufeng' '珠穆朗玛峰' ->单双引号包裹起来的都是字符串(单双引号没有区别)
字符串常用方法charAt charCodeAtsubstr substring slicetoUpperCase toLowerCaseindexOF lastindexOfsplitreplacereplacematch
…
3. boolean:布尔类型( 只有true 和false俩个值`)
①Boolean()
把其它数据类型的值转换为布尔类型
只有“0,NaN,空字符串、null,undefined”这五个数据值转换成布尔类型的false,其余的都为true
② '!'
!=;不等于
叹号在JS中还有一个作用:取反,先把值转换成布尔类型,再去取反
③ ‘!!’
在一个叹号取反的基础上在取反,取俩次反相当于没有任何操作,但是已经把其他类型值转换为布尔类型了,和Boolean是相同的效果
4. (null):空对象指针(null是空对象,不是(null),因为不加(),null就是个空对象,不显示了)
现在没有, 以后会有的, 空指针对象
5. undefined:未定义
压根就没有过,现在没有以后也没有0
(二)、引用数据类型
引用数据类型(应运而生){} [] Date RegExp fn .…
1.object对象数据类型
① 对象 是复合数据的载体, 用{}包起来, 内容是一对一对的键值对(属性名: 属性值)
② 这里的冒号相当于 等号 是赋值的意思,不同的键值对之间用逗号隔开③ 属性名 对应 咱们变量名 (但是属性名可以是数字,也不能是数字开头的字符)④: 对应咱们的 等号⑤ /属性值 对应咱们的 变量的值(可以是任意的数据类型)
var per = { c"name":'zfpx',1:'wwww',age:9,bol: true,hobby:{hobby1:'play',hobby2: 'read'},fn: function () {}};var per2 = {name:'小明','name':'小红',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();//NaNvar 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();//把函数执行的结果赋值给 aconsole.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:获取当前实例的所属类信息
作者:志若鸿鹄,尺步寸微
链接:前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法_志若鸿鹄,尺步寸微的博客-CSDN博客_前端基本数据类型
来源:CSDN
ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...相关推荐
- vue调用 webVideoCtrl.js 海康设备调试 无法获取未定义或 null 引用的属性“HWP_SubmitHttpRequest”
海康网页端开发遇到 无法获取未定义或 null 引用的属性"HWP_SubmitHttpRequest" 经过代码调试后,发现原因: 没有指定视频展示对应的div 解决方法: // ...
- SCRIPT5007: 无法获取未定义或 null 引用的属性“call”
问题 ie浏览器中打开vue项目时报错:SCRIPT5007: 无法获取未定义或 null 引用的属性"call" 解决方法 1.确保webpack版本在 2.6.1以上 2.安装 ...
- JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案
JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案 参考文章: (1)JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案 (2)https://ww ...
- 无法获取未定义或 null 引用的属性“text”_【CSS】是时候开始用 CSS 自定义属性了...
自定义属性(有时候也被称作CSS变量或者级联变量)是由CSS作者定义的,它包含的值可以在整个文档中重复使用.由自定义属性标记设定值(比如:--main-color: black;),由var() 函数 ...
- 无法获取未定义或 null 引用的属性“value”_SpringBoot之Spring@Value属性注入使用详解
在使用Spring框架的项目中,@Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性.在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下@Va ...
- 无法获取未定义或 null 引用的属性“title”_JDK中四种对象引用类型
JDK1.2之前,一个对象只有"已被引用"和"未被引用"两种状态,这将无法描述某些特殊情况下的对象,比如,当内存充足时需要保留,而内存紧张时才需要被抛弃的一类对 ...
- 【Javascript报错】无法获取未定义或 null 引用的属性“replace“
今天在处理前端字符串替换的问题中 使用了这段代码: str.replace("xx","xx") 报错 >> 是因为str没获取到 str = u ...
- 使用阿里妈妈字体图标库,ie10报错,无法获取未定义或 null 引用的属性“firstChild”
前因:公司优化页面,要把彩色图片,换成字体图标. 结果:更换完后,测试发现ie10,ie9都会报错,但demo测试是没有问题的. 测试:console.log(target)为null,找到docum ...
- DataTables在IE8下报'style' 为空或不是对象错误问题 , SCRIPT5007: 无法获取未定义或 null 引用的属性“style”
网页错误详细信息: 消息: 'style' 为空或不是对象 行: 5570 字符: 5 代码: 0 检查后才发现,问题在于数组最后多了一个",",会造成Table列数计算时多了一列 ...
最新文章
- IOS类似9.png
- Linux中的umask
- [Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点
- 【自适应盲均衡4】基于RLS的多径衰落信道均衡算法(RLS-CMA)的理论推导与MATLAB仿真
- Qlik 助力安井食品实现企业智能决策、高效运营
- byte 类型比较_基本类型和包装类对象使用 == 和 equals进行比较的结果?
- python的使用说明_Python教程:Python中__init__.py的使用用法说明
- 一下代码不符合php,各位帮我看看哪里错了一直提示错误,谢谢大家。可把代码复制一下...
- mysql查询,left join(求并集),where(求交集)
- 如何做好项目的需求与业务调研?
- QQ目录下各文件用途不完全揭密
- 动力电池集成关键技术及电池测试与验证
- 纪念第一次2019河南省第十二届ACM大赛之旅
- win7访问linux共享没有权限设置,局域网共享时提示:你没有权限访问,请与网络管理员联系...
- 校园 计算机网络设置路由器,GSWiFi路由器校园网怎么设置
- 在CentOS上MySQL数据库服务器配置方法
- 1449异常 mysql_mysql异常-UncategorizedSQLException 1449
- 用户运营实战:打造流失用户召回体系
- 安装php vcruntime140,win7安装apache或者php 5.7缺少vcruntime140.dll的问题
- 人工智能培训机构哪个好?求求你们别再去培训机构学假的人工智能了!
热门文章
- windows平台下用CMake工具编译osg用法说明
- php数组foreach循环添加键值对_在PHP的foreach循环中插入一个$key作为变量
- java中bean的定义有哪些_详解Java的Spring框架中bean的定义以及生命周期
- linux 搭建任务队列集群,beanstalkd任务队列 linux平台安装测试
- 东风本田crv2020新款混动说明书_能上绿牌,无续航焦虑!2020北京车展混动新车抢先看...
- 【BIRT】使用rptlibrary设置统一数据源
- LVM逻辑卷的管理--创建LVM、扩容,快照实战
- 4-具体学习git--分支
- This generally means that another instance of this process was already runni
- 我的SharpDevelop插件之一:知识管理器(2006年博客迁移)