专栏名称: 程序员之家
程序员第一自媒体,与你探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!
目录
相关文章推荐
程序员技术  ·  前美团员工求助:在美团背了个C绩效,慌得不行 ... ·  15 小时前  
蚂蚁技术AntTech  ·  欢迎参加!蚂蚁SRC年度颁奖盛典&大模型安全交流会 ·  16 小时前  
大淘宝技术  ·  大模型微调知识与实践分享 ·  昨天  
伯乐在线  ·  HR ... ·  昨天  
伯乐在线  ·  HR ... ·  昨天  
51好读  ›  专栏  ›  程序员之家

一行神奇的 javascript 代码

程序员之家  · 公众号  · 程序员  · 2017-04-23 21:58

正文

请到「今天看啥」查看全文


运算符用红色标出,有一点可能大家会意识不到,其实中括号[]也是一个运算符,用来通过索引访问数组项,另外也可以访问字符串的子字符,有点类似charAt方法,如:’abcd’[1] // 返回’b'。而且中括号的优先级还是最高的哦。


预处理结束,接下来需要运用的就是javascript的类型转化知识了。我们先说说什么情况下需要进行类型转化。当操作符两边的操作数类型不一致或者不是基本类型(也叫原始类型)时,需要进行类型转化。先按运算符来分一下类:


  • 减号-,乘号*,肯定是进行数学运算,所以操作数需转化为number类型。

  • 加号+,可能是字符串拼接,也可能是数学运算,所以可能会转化为number或string

  • 一元运算,如+[],只有一个操作数的,转化为number类型


下面来看一下转化规则。


1. 对于非原始类型的,通过ToPrimitive() 将值转换成原始类型:


ToPrimitive(input, PreferredType?)


可选参数PreferredType是Number或者是String。返回值为任何原始值.如果PreferredType是Number,执行顺序如下:(参考:http://es5.github.io/#x9.1)


如果input为primitive,返回


否则,input为Object。调用 obj.valueOf()。如果结果是primitive,返回。


否则,调用obj.toString(). 如果结果是primitive,返回


否则,抛出TypeError


如果 PreferredType是String,步骤2跟3互换,如果PreferredType没有,Date实例被设置成String,其他都是Number


2. 通过ToNumber()把值转换成Number,直接看ECMA 9.3的表格http://es5.github.io/#x9.3

规则如下:



3. 通过ToString()把值转化成字符串, 直接看ECMA 9.8的表格http://es5.github.io/#x9.8







请到「今天看啥」查看全文