javascript权威指南阅读笔记

= 、== 、 与=== 解释

两者都用于比较两个值是否相等 前者称为想等运算符 ,后者为严格相等运算符  区别: 前者可以进行类型转换 后者不可以

而=为赋值的意思 != 称为不相等 !== 不严格相等

比较的注意点

严格相等  : 

类型不同 就不同(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   }

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值