引言来到北京已经有4个年头了,做过一些测试、打杂、前端的工作之后,最后还是选择了前端的工作。现阶段主要还是在写业务代码,代码质量,工作效率就显得尤为重要。【学以致用】这个系列主要记录一些平时工作、学习遇到的一些问题,方便以后查漏补缺。valueJavaScript 中原始类型的值,包括字符串、数字、布尔值、Symbol(ES6新增),以及两个特殊值:null(空)、undefined(未定义)。通常我们在工作的时候需要和后台对接,函数在处理返回值的时候如果做了容错判断,把数据转换成我们想要的类型,在编写后续业务代码的时候就会更加轻 :-D下图是 《JavaScript权威指南》中关于类型转换的总结:举个栗子:后台返回值为一个字符串,内容是0 ~ 5的数字,现在使用的时候需要将参数转化为数字类型。// wrongreturn Number(value) // ’’ -> 0 // undefined -> throw TypeError // ‘aaa’ -> NaN// right 前面是剔除掉 ’’ undefined ,后面可以剔除掉 NaN 的类型if (value && Number(value) >= 0) { return Number(value);} else { return null; }关于值的比较,当我们只关心值是否正常时,还有一个比较靠谱的方法:正则表达式,上面的例子也可以这样来写:if (/[0-5]/.test(value)) { return Number(value);} else { return null; }小结:在判断两个值是否相等时,最好显式的转化,然后用全等运算符 === 或者 !== 来比较。js比较表:https://dorey.github.io/JavaS…对象转换为原始值所有对象会继承两个方法toString()和valueOf()。对象转换为字符串 String(Object)1、当对象具有toString()会优先调用;2、如果没有toString()方法,或者toString()没有返回一个原始值,则会调用valueOf()方法;3、无法从toString()和valueOf()获取原始值的时候,则会抛出一个类型错误异常。String([1,2,3]) // “1,2,3"String(function(x) {return x+1;}) // “function(x) {return x+1;}“String(”/\d+/g”) // “/\d+/g"String(new Date(2019,4,14)) // “Tue May 14 2019 00:00:00 GMT+0800 (中国标准时间)“对象转换为数字 Number(Object)1、当对象具有valueOf()会优先调用;2、如果没有valueOf()方法,或者valueOf()没有返回一个原始值,则会调用toString()方法;3、无法从toString()和valueOf()获取原始值的时候,则会抛出一个类型错误异常。Number([1,2,3]) // NaN 原始类型Number(function(x) {return x+1;}) // NaNNumber(”/\d+/g”) // NaNNumber(new Date(2019,4,14)) // 1557763200000参考文章JavaScript 权威指南 - 第三章:类型、值和变量