小程序定义变量时,不用指定数据类型,根据值进行类型推断即可。推断结果为数据类型number、string、boolean、object、array、function和regexp、date八种中的其中一种。有编程经验的同志应该知道,没编程经验的同学要知道,在很多编程语言中,原始数据类型是不能调用方法的。
如果要支持调用方法,需对框架进行改良,小程序改良之后,支持在调用方法时自动通过Number()等构造一个临时对象,而访问的方法均来自这个临时对象;undefined 和 null 没有对应的包装对象,所以访问他们的方法会报错。
区分不同数据类型,可通过constructor属性实现,也可通过可typeof进行判断,但typeof只能用于区分number、string和boolean类型。
7.1 数值类型number
number包括整数和小数两种数值,可调用方法如下。
toString(radix):数值转为字符串。radix省略时,使用基数10(十进制),radix为2、8、16时,显示二、八、十六进制值的字符串;
valueOf():获取Number对象的原始值,隐式调用;
toLocaleString(x):数值x转为字符串并进行数字本地格式化,默认zh-cn;
toFixed(x):数值保留小数点后指定位数并转换为字符串;
toExponential(x):数值以指数形式表示,保留小数点后指定位数并转换为字符串;
toPrecision(x):指数或点形式表示数值,保留指定位数并转换为字符串。
//number数值类型使用示例 onLoad: function () { let i = 1680.506; console.log(‘变量值为:%f,数据量类型是:%s‘, i, typeof i); console.log(‘判断为Number的结果是:‘, Number==i.constructor) console.log(‘转为字符串类型结果是:‘, typeof i.toString()); console.log(‘转为8进制值为:‘, i.toString(8)); console.log(‘本地化格式结果:‘, i.toLocaleString()); console.log(‘保留2位小数,四舍五入:‘, i.toFixed(2)); console.log(‘指数形式:‘, i.toExponential()); console.log(‘保留3位小数,四舍五入:‘, i.toExponential(3)); console.log(‘保留位数,四舍五入:‘, i.toPrecision(3)); }
输出结果
变量值为:1680.506,数据量类型是:number 判断为Number的结果是: true 转为字符串类型结果是: string 转为8进制值为: 3220.40304467227433 本地化格式结果: 1,680.506 保留2位小数,四舍五入: 1680.51 指数形式: 1.680506e+3 保留3位小数,四舍五入: 1.681e+3 保留位数,四舍五入: 1.68e+3
转为数值:可用Number()把其他数据类型转为数值型,如果结果非数值,返回NaN。还可用内置方法parseInt(),将其他数据类型转为整数, 可用parseFloat()转为浮点数,转换失败时也是返回NaN。
//数值类型转换使用示例 onLoad: function(options) { let s = "1210.25"; let n = Number(s); console.log(‘字符串"%s",转为数值类型是:%s‘, s, typeof n); console.log(‘非数值转换为数值,结果为:%s‘, Number(‘abc‘)); let i = parseInt(‘69855‘); console.log(‘"69855"字符串转为整数,结果是:%d‘, i); let f = parseFloat("pf"); console.log(‘"pf"字符串转为浮点数,结果是:%f‘, f); }
输出结果
字符串"1210.25",转为数值类型是:number 非数值转换为数值,结果为:NaN "69855"字符串转为整数,结果是:69855 "pf"字符串转为浮点数,结果是:NaN
骚年在编程的过程中,经常遇到的数据类型除了数值之外,还有字符串。有关字符串的详细内容,请见下一张杰。