最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js隐式转换的知识实例讲解

来源:动视网 责编:小采 时间:2020-11-27 22:06:53
文档

js隐式转换的知识实例讲解

js隐式转换的知识实例讲解:开胃菜 [] == ![] //true ==> == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object] [n
推荐度:
导读js隐式转换的知识实例讲解:开胃菜 [] == ![] //true ==> == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object] [n


开胃菜

[] == ![] //true ==> "" == false
123 ^ [] //123 ==> 123 ^ 0
~{} //-1 ==> ~0
{} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object]
[null] == "" //true ==> [""] == ""

值得注意的操作符:

一元操作符:通过Number()进行转换;其中包括*号运算符,/号运算符,都是经Number()转换

+undefined //NaN

逻辑运算符:!等价于Boolean(),将操作数进行布尔值类型转换

位操作:~, |, &, ^;当一边操作数为NaN时,可等价于操作数为0;

//由以下变化可以证得:
NaN ^ NaN ^ NaN = 0

加号运算符,比较复杂

优先级最高的是字符串,任何操作数与字符串相加都将其String(x)成字符串,再进行字符串拼接

console.log("a" + 1); //"a1"
console.log("a" + "1"); //"a1"
console.log("a" + false); //"afalse"
console.log("a" + undefined); //"aundefined"
console.log("a" + NaN); //"aNaN"
console.log("a" + null); //"anull"
console.log("a" + {}); //"a[object Object]"

其次number,而object在正常情况下输出的就是string类型

//console.log(1 + "1"); //"11"
console.log(1 + 1); //2
console.log(1 + true); //2 
console.log(1 + undefined); //NaN
console.log(1 + NaN); //NaN
console.log(1 + null); //1
console.log(1 + {}); //"1[object,Object]"

当一方为Boolean,或者两方都是Boolean时,都将其进行Number处理,同理undefined与null也一样

console.log(true + true); //2 
console.log(true + undefined); //NaN
console.log(true + NaN); //NaN
console.log(true + null); //1
console.log((true + [NaN])); //"trueNaN"

减号,则将两边都进行Number()处理

比较运算:==, >, <, >=, >=, != 遵循规则(摘自高程3):

1.null和undefined是相等的

2.要比较相等之前,不能将null和undfined转换成其他任何值

3.如有一个操作数为NaN,相等操作符返回fasle,不相等操作符返回true, NaN不等于NaN

4.两个对象之间的比较,两者指向同一个对象(地址相同),相等操作符返回true,否则返回false

值得注意的是:对象间的>=与==(!=)比较方式是不同的,前者是toString()返回值的比较,后者是引用地址的比较

当都是两边都是字符串时,按字符编码大小进行比较

当一方操作数为boolean,string,object,转成number类型的数值再进行比较;

console.log("NaN" == NaN); //false
console.log(undefined == null); //true
console.log({} >= {1:2}); //true
console.log({1:2} != {}); //true
console.log({} == {1:2}); //false
console.log([1] == [1]); //false
console.log(null == 0); //false

文档

js隐式转换的知识实例讲解

js隐式转换的知识实例讲解:开胃菜 [] == ![] //true ==> == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object] [n
推荐度:
标签: 转换 例子 详解
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top