= 、== 、 与=== 解释
两者都用于比较两个值是否相等 前者称为想等运算符 ,后者为严格相等运算符 区别: 前者可以进行类型转换 后者不可以
而=为赋值的意思 != 称为不相等 !== 不严格相等
比较的注意点
严格相等 :
类型不同 就不同(undefined null)
NAN 不等于任何值 自己也不等于自己 x != x 可以判断 返回true
对于字符串来讲 先是长度 后是每一位值相等 还有一种方法 String.localeCompare() 依照本地顺序进行排序
其他的都是值比较 相等就是相等 否则为假
引用值的比较 永远不相等 除非两个引用值指向同一个地址
非严格相等
当类型相同时 依据严格相等的方式进行比较
注意 undefined == null
类型不同时会进行类型转换 转换如下解释
js类型转换种类如下
原始值之间转换
原始值转换为对象
通过调用其构造函数将其转换为包装类对象 String、Boolean、 Number 注意undefined 与null 没有 转换对象会报错
所以他两个没有属性与方法
显式类型转换 通过函数直接转换类型
函数包括 string 、 number、Boolean 以及 tostring 方法
除了 undefined 与 null 都有 tostring方法 即便没有两者访问时也不会报错
对象到原始值的转换
对象转换为布尔值 全部为true
对象转换为字符串
首先 会调用Object上的tostring方法 将对象转换为一个原始值 再将这个原始值转为字符串返回
如果没有tostring方法 或者返回的不是一个原始值 则调用valueOf(存在的话) 会返回一个原始值 在将这个原始值转为字符串
如果系统无法从这两个方法中获取到一个原始值 就会报一个类型错误
对象转为数字
首先会调用valueOf方法 会返回一个原始值 将这个原始值转换为数字返回
如果对象具有一个tostring方法 会调用他返回一个原始值 在将这个原始值转换为数字
如果这两种方法都不存在 则会返回一个类型转换错误
第一题:[]会转换成为一个布尔值,根据前面说的所有的对象都转换为true,则第一题返回true
第二题:首先[]会转换为原始值,首先调用valueOf()返回数组本身,然后调用toString()返回空字符串,空字符串再转换为0,而false则根据==的隐士转换规则转换为0,所以返回true
第三题:首先{}会转换为原始值,首先调用valueOf()返回对象本身,然后调用toString()返回“[object object]”转换成数字为NaN,而false转换为数字为0,所以返回false.
涉及到了引用值与原始值的隐式转换一定牢牢记主转换规则 先tostring 后 valueOf 进行转换 在进行比较
包装类
当把原始值作为对象访问属性时候,系统将通过他们的构造函数对他们进行包装并返回一个临时对象 称为包装类对象
他是临时的 一旦访问结束后直接消失 具体过程看笔记 于此挂钩 属性访问表达式 一般会用 . 符号来访问对象的属性
但是每当遇到属性名称为保留字或者不知道属性名称时要用 obj【prop】 的表达式形式
对于数组而言 【】形式必须 对于对象来讲 当他的属性名称不固定是通过js计算来的必须要用【】表达式来取值
如果属性名计算结果为undefined 或者 null时 会报错 他们两个没有属性和方法
运算符
+ 连接符号 可以进行数字加法算数 或者 字符串拼接
- 取反运算 也可以是减法运算
++ 自增
++ i 返回的是计算后的值
i ++ 返回 的是为增加的值
同理 -- 递减运算
数字进制转换问题
其他进制转换为十进制
使用 parseInt()函数,parseInt解析一个字符串参数,并返回一个指定基数的整数 ,用法如下:
parseInt(string, radix);
以二进制为例,用法如下:
parseInt('1000',2) //8
parseInt(1000,2) //8
其他进制转化为10进制只要改变第二个参数就可以了。
十进制转为其他进制
使用数字类型的toString方法,该方法可以接受一个参数,返回转化进制后的字符串。栗子如下:
var num = 8;
num.toString(2) // '1000'
注意此方法只适用于数字类型,对于字符串类型的需要先转为整数再调用
var num = '8';
num.toString(2) // '8'
parseInt(num).toString(2) // '1000'
javascript中的contains方法
可以判断节点A是否包含了节点B
9 window.onload = function(){
10 var A = document.getElementById('parent'),
11 B = document.getElementById('child');
12 alert(A.contains(B));
13 alert(B.contains(A));
14 }