JavaScript 数字与字符串互转大法(雾)
数字转字符串
number.toString(); 目前只知道这个,感觉很实在 = =
var num = 12;
console.log(typeof (num.toString())); //String
字符串转数字
- 利用 js 变量弱转换,比如: “12” - 0 = 12(number)
- 转换函数,字符串 —> 数字 ( 非数字类型的字符串转换后获得 NaN)
2.1 parseInt(string,radix);
将一个字符串 string 转换为 radix 进制的整数,radix 为介于2-36之间的数。
console.log(parseInt("1")); // 1
console.log(parseInt("-1")); // -1
console.log(parseInt("2.333")); // 2
console.log(parseInt("12apple")); // 12,有数字字符串在内
console.log(parseInt("apple")); // NaN,非数字字符串
console.log(parseInt(true)); // NaN,非 string
console.log(parseInt("0xF",16)); // 15
console.log(parseInt("10",2)); //2
2.2 parseFloat(string);
函数解析一个参数(必要时先转换为字符串)并返回一个浮点数。
console.log(parseFloat("2.333")); // 2.333
console.log(parseFloat("-2.333")); // -2.332
console.log(parseFloat("2.333apple")); // 2.333
console.log(parseFloat(true)); // NaN,非 String
- 强制类型转换
- Boolean(value)
console.log(typeof null); // object
console.log(typeof undefined); // undefined
console.log(typeof ""); // string
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean("")); //false
console.log(Boolean(0)); //false
console.log(Boolean(false)); // false,false 可以等同 0
console.log(Boolean()); // false
// 只要 value 里面有起码一个字符的字符串、非 0 数字、对象,都返回 true
console.log(Boolean("0" + null)); //true
console.log(Boolean("0" + undefined)); //true
console.log(Boolean("0" + "")); //true
console.log(Boolean("0" + 0)); //true
console.log(Boolean(new Object())); //true
console.log(Boolean({})); //true
console.log(Boolean([])); //true
- Number(object)
console.log(Number(true)); // 1
console.log(Number("")); // 0
console.log(Number([])); //0
console.log(Number(null)); //0
console.log(Number("2.333")); // 2.333,数字字符串
console.log(Number("2.333.333")); // NaN,这时候不是数字字符串,不存在2.333.333数字,返回 NaN
console.log(Number("apple")); // NaN,这时候不是数字字符串,不存在2.333.333数字,返回 NaN
console.log(Number("2.333apple")); // NaN,不存在 2.333apple 数字,返回 NaN
console.log(Number(undefined)); //NaN,转了之后非数字,返回 NaN
console.log(Number(new Object())); //NaN,转了之后非数字,返回 NaN
console.log(Number({})); //NaN
- String(value)
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
console.log(String([])); // ""(打印空)
console.log(String({})); // "[object Object]"
console.log(String(true)); // "true"
注意:
JS 中值的类型分为原始值类型和对象类型。
- 原始值类型包括 number, string, boolean, null 和 undefined;(运用 n sb un ‘你傻逼哇’来记忆,好像有点傻:))
- 对象类型即 object。原始值类型它就不是对象。
- 另外,要注意 ‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象。
// 用 typeof 运算符返回的值也是完全不一样的:
typeof 'apple'; // 'string'
typeof new String('apple'); // 'object'
第一行是直接字面值,第二行是 String 对象。
当第二行的 ‘apple’.length 可以获得值 5,是因为 js 内部将其包装为 string 对象,执行完毕之后就把这个对象扔掉啦,并不是说这个时候他就是 String 对象,这个情况称之为装箱。