为何str.substr(0,4)提示“不是函数”?jQuery数字截取报错排查
问题原因与解决办法
你碰到的这个报错其实很好理解——substr()是字符串类型独有的方法,但你定义的str是一个数字类型的值,数字对象根本没有这个方法,所以调用时直接触发了类型错误。
具体看你的代码:
var str = 7.2387; // 这里的7.2387是Number类型,不是字符串 var shorter = str.substr(0,4); // 数字没有substr方法,报错!
几种可行的解决方式:
- 先转字符串再截取:把数字转换成字符串后,就能正常调用
substr了
var num = 7.2387; var shorterStr = num.toString().substr(0,4); // 得到"7.23" // 或者直接把初始值定义为字符串 var str = "7.2387"; var shorterStr = str.substr(0,4);
- 如果是需要数值上保留两位小数:更推荐用专门的数值处理方法,避免字符串截取的局限性(比如数字位数变化时出错)
- 用
toFixed():会自动四舍五入,返回字符串类型
var num = 7.2387; var fixedNum = num.toFixed(2); // 得到"7.24",转数字的话用Number(fixedNum)- 用
Math.floor实现不四舍五入的截取:
var num = 7.2387; var truncatedNum = Math.floor(num * 100) / 100; // 得到7.23(数字类型) - 用
内容的提问来源于stack exchange,提问作者Ismael Quirantes
相关产品推荐
相关产品推荐

