typeof null的输出结果是object。null表示一个空指针对象
更多console输出方法 许多大公司在网站的console里都有招聘信息
NaN:not a number
监测机制:
首先验证当前要监测的值是否是数字类型,如果不是浏览器会默认把值转化为数字类型。number(); number可以转化boolean值,parseInt不可以。当前监测的数字已经是数字类型,有效数字返回false,无效返回true 数字类型中只有NaN不是有效数字如果检测对象是对象,那先把对象用toString转化为字符串,再转化为数字 比如[] isNaN([])=>false 因为[]=>''=>0 isNaN([12])=>false错的。这个条件永远不成立,NaN和谁都不相等,即使num确实不是有效数字。要用isNaN(num)监测是否为有效数字只有这一种方法,所以非常重要! NaN===NaN错误,和谁都不相等
和number有区别
出现任何非有效数字字符就是NaNparse从左边开始查找有效数字,到第一个非数字结束【何把其他类型转化为布尔类型】 Boolean: !XX 先把一个转化为布尔类型再取反 !!XX 取两次反和Blooean无区别,一般就用两个叹号,因为方便 只有’’ undefined NaN null 0五个值是false,其余都是ture
null和undefined
null:空 意料之中的没有,一般都是人为手动地赋值为null,后面程序中会再次给他赋值undefined:未定义 代表一般都不是人为手动控制,大部分都是浏览器自主为空,后面可以赋值或不赋值 的 对象的布尔类型都是true普通对象 -由大括号包裹起来的 -由0到多组属性名和属性值(键值对)组成
var obj={ name:'wangyue'; age:9 }; //对象的操作 【获取】 obj.name; obj['name'];一般来说对象的属性名都是字符串格式,属性值不固定,注意引号 【增/改】 js对象中属性名不允许重复,是惟一的 obj.name='liuyuan'//原有对象中有name属性,修改 obj.sex='male'//原有对象中不存在sex,增加 【删】 彻底删除:对象中不存在这个属性 delete obj['age']; 假删除:并没有移除这个属性,至少让当前属性为空 obj.sex=null;思考题:
var obj={ name='wangyue', age=9 }; var name='liuyuan'; obj.name =>'wangyue' 获取的是name属性的值 obj['name'] =>'wangyue' 同上 obj[name] =>此处的name是一个变量即obj['liuyuan'],结果是undefined 'name'和name的区别? =>'name'是一个字符串值 =>name是一个变量,不是值,代表的是其存储的这个值引号一定要加,不加name就变成一个变量了,变量有自己的值!
键为数字时必须用中括号! 那如果用布尔类型做键呢
obj[true]=200; obj; =>{0:100,name:'wangyue',true:200} obj[true] =>200 可以 obj[null]=300 可以 obj[undefined]=400可以 obj[{}]=500; 先把{}.toString()的结果【object object】当做对象属性名存储起来!!!!获取的时候也一样 obj;=>{0:100,name:'wagyue',true:200,null:300,undefined:400,[object object]:500}-当我们存储的属性名不是字符串也不是数字的时候,浏览器会把这个值转化为字符串(toString)然后再进行存储。 -所以当key为对象是不可靠,因为任何对象都会成为【object object】,obj[{xxx=‘xxx’}],obj[{}]都一样
var ary=[12,23,34]; /*{ 0:12, 1:23, 2:34, length:3 }*/