本文共 5599 字,大约阅读时间需要 18 分钟。
简单数据类型:undefined / NULL / String / Number / Boolean
复杂数据类型:Object
let a;console.log(a); // undefined
console.log(typeof null); // object
undefined和null的区别:
null对象值为空,undefined没有赋值
console.log(Number(null)); // 0 console.log(Number(undefined)); // NaN
console.log( isNaN(NaN ) // true console.log( isNaN(10 ) // falseconsole.log( isNaN('10') // falseconsole.log( isNaN('blue') // trueconsole.log(isNaN( true )) // false (true会被转换成1)
console.log(isNaN("")); // false console.log(isNaN(" ")); // false console.log(isNaN(null)); // false console.log(isNaN([])); // false console.log(isNaN(false)); // false
console.log(isNaN(function(){})); // true console.log(isNaN(undefined)); // true console.log(isNaN({})); // true
数值转换:把非数值值转换为数值
console.log(Number(true)); // 1console.log(Number(false)); // 0console.log(Number(1)); // 1console.log(Number(null)); // 0console.log(Number(undefined)); // NaN // 规则一Number("1") // 1Number("123") // 123Number("010") // 10 (前导的0会被忽略)Number("-10") // -10// 规则2Number("1.1") // 1.1Number("0.1") // 0.1Number("0000.1") // 0.1 (前导的0会被忽略)// 规则3Number(0xf) // 15 (16进制数转成10进制)// 规则4Number("") // 0Number(" ") // 0Number('') // 0// 规则5Number("Hello Wolrd") // NaNNumber("0ff6600") // NaNNumber("ff6600") // NaNNumber("0.1a") // NaNNumber("10a") // NaNNumber("a10.1") // NaN
将字符串转成n进制的数值
parseInt首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方
法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的 字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将 把该字符之前的字符串转换成数字。console.log(parseInt('a123')); // NaN console.log(parseInt('123a')); // 123 console.log(parseInt('')); // NaN console.log(parseInt("12.5px")); // 12 console.log(parseInt("0xf")); // 15 (16进制)
解析一个参数(必要时先转换为字符串)并返回一个浮点数。默认解析十进制值。
parseFloat("3.14") // 3.14parseFloat("-3.14") //-3.14parseFloat("+3.14") //3.14parseFloat("0003.14") // 3.14parseFloat(" 3.14 ") // 3.14parseFloat("3.14abc") // 3.14parseFloat("3.14.5678") // 3.14parseFloat("abc3.14") // NaNparseFloat("abc123") // NaNparseFloat("123abc") // 123
MAX_VALUE :正数最大值,再大就会变成InfinityMIN_VALUE :正数最小值,再小就会变成0NaN :Not a NumberNEGATIVE_INFINITY :负无穷大,即-InfinityPOSITIVE_INFINITY :正无穷大,即Infinity
console.log(isFinite(NaN)); // false console.log(isFinite(Infinity)); // false console.log(isFinite(-Infinity)); // false console.log(isFinite('0')); // true
原因:在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的。
在JS中数字采用的IEEE 754的双精度标准进行存储(存储一个数值所使用的二进制位数比较多,精度更准确)解决方法:想办法规避掉这类小数计算时的精度问题就好了,那么最常用的方法就是将浮点数转化成整数计算。因为整数都是可以精确表示的。
console.log(0.1+0.2); // 0.30000000000000004 console.log((0.1*10+0.2*10)/10) // 0.3
把数字转成指定长度的字符串
let a = 1.324; console.log(a.toPrecision(2)); '1.3'
把一个数字转换为指数计数法
let a = 1.324; console.log(a.toExponential()); // 1.324e+0 console.log(a.toExponential(1)); // 1.3e+0
let a = 123; console.log(String(a)); // '123' console.log(a.toString()); // '123' let b = [1,3,4]; console.log(String(b)); // 1,3,4 console.log(b.toString()); // 1,3,4 let c = false; console.log(c.toString()); // 'false' console.log(String(c)); // 'false' let d = null; console.log(String(d)); // 'null' console.log(d.toString()); // 报错 let e = undefined; console.log(String(e)); // 'undefined' console.log(e.toString()); // 报错 let f = 10; console.log(f.toString(2)); // 1010(二进制字符串)
toString(n)中可转成n进制字符串,如果非数字的,则就转成普通字符串
js字符串中有其自带的一些方法可使用:
字符串截取,如果没有end值,则截取到末尾最后一个;不改变原字符串
let str = 'abcdefg'; console.log(str.slice(3, 5)); // 'de' console.log(str.slice(3)); // 'defg'
let str = 'abcdefg'; console.log(str.substr(3, 1)); // 'd' console.log(str.substr(3)); // 'defg'
let str = 'abcdefg'; console.log(str.substring(3, 5)); // 'de' console.log(str.substring(3)); // 'defg'
indexOf: 从头开始的第一个索引值
lastIndexOf:从尾部开始的第一个索引值let str = 'abcbdefg'; console.log(str.indexOf('b')); // 1 console.log(str.lastIndexOf('b')); // 3
trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。
let str = ' abcbdefg '; console.log(str.trim()); // abcbdefg
let str = 'ABCDabcd'; console.log(str.toLowerCase()); // abcdabcd console.log(str.toUpperCase()); // ABCDABCD
let str = 'ABCDabcd'; console.log(str.replace(/A/g, '0')); // 0BCDabcd console.log(str.replace(/A/gi, '0')); // 0BCD0bcd (不分大小写)
fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码
console.log(String.fromCharCode(72,69,76,76,79)); // HELLO let str = 'HELLO'; console.log(str.charCodeAt(0)); // 72
let a = [1,2,3]; console.log(typeof a); // object let b = function(){}; console.log(typeof b); // function
typeof(是操作符,不是函数)可以用来检测数据类型或者函数
转载地址:http://yhoq.baihongyu.com/