js数据类型分为基本数据类型
、引用数据类型
两大类
值存在栈中,赋值传值
Number
js中,数字是不区分整数还是小数的,当数字无限大时,用Infinity
表示,计算的时候出现错误,用NaN
表示非数。
let a = 123;
let b = 1.23;
let c = -29;
let a = 10;
let b = 'qwer';
console.log(a/c); // NaN
console.log(2/0); // Infinity
数字的常见操作
let a = 1 + 1;
let b = 2 - 1;
let c = 2 * 2;
let d = 4 / 2;
let e = 5 % 2; // 取余 1
使用Math对象中提供的方法进行数值操作:
let a = Math.floor(2.47); // 2
let a = Math.ceil(2.47); // 3
let a = Math.ceil(2.47); // 2
let a = Math.ceil(2.57); // 3
let a = 1.2345;
let b = a.toFixed(2); // 1.23
let a = Math.random(); // 随机一个0-1的数,不包含1
let b = Math.floor(Math.random()*100); // 随机一个0-99的整数
let a = 'test';
let b = 12.34;
let c = isNaN(a); // true
let d = isFinite(b); // true
String
定义方式
let str1 = 'test';
let str2 = "test";
let str3 = `test`
字符串操作方法:
let str = 'abcdefg';
let len str.length; // 7
let str = 'abcdefg';
let char = str.charAt(1); // b 指定位置的值
let charCode = str.charCodeAt(1); // 98 该字符code码
let str = 'abcabc';
let v = str.indexOf('b'); // 1 包含第一个b的序号,不包含则返回-1
let vLast = str.lastIndexOf('b'); // 4 包含最后一个b的序号
let vFlag = str.includes('b'); // true 是否包含b
let sFlag = str.startsWith('a'); // true 开始是否包含a
let eFlag = str.endsWith('a'); // false 结尾是否包含a
let str1 = 'abc';
let str2 = 'def';
let str3 = str2.concat(str1); // defabc
let str = 'a,b,c,d,e,f';
let arr = str.split(','); // ['a', 'b', 'c', 'd', 'e', 'f']
let str = 'abcdefgh';
let sliceStr = str.slice(1,5); // bcde
let substringStr = str.substring(1,5); // bcde
let substrStr = str.substr(1,5); // bcdef
toLowerCase()、toUpperCase() 字符串大小写转换
replace()、match()、search() 字符串模式匹配
trim()、trimStart()、trimEnd() 移除字符串收尾空白符
valueOf()、toString() 获取字符串
padStart()、padEnd() 补齐字符串长度
parseInt()、parseFloat() 字符串转为数字
undefined
数据未定义定义了一个变量,但没有给变量赋值
let str;
console.log(str); // undefined
let str = null;
console.log(str); // null
基本数据类型,用来表示独一无二的值,避免同名属性被覆盖。
let str = Symbol('test');
console.log(str); // Symbol(test)
BigInt不能用于Math对象中的方法
let n = 10n;
let m = BigInt(10)
值存在堆中,赋值传址
数组操作:
let arr = [1, 2, 3]
arr.length = 5;
console.log(arr) // [1, 2, 3, empty × 2]
let arr = [1, 2, 3]
console.log(arr.indexOf(2)) // 1
console.log(arr.indexOf(5)) // -1
let arr = [1, 2, 3]
let arrNew = arr.slice(0,2)
console.log(arrNew) //[1, 2] 是一个左闭右开区间
let arr = [1, 2, 3]
let arrNew = arr.push(4)
console.log(arrNew) //4
console.log(arr) // [1, 2, 3, 4]
let arrNewPop = arr.pop()
console.log(arrNewPop) //4
console.log(arr) //[1, 2, 3]
let arr = [1, 2, 3, 11, 5, 44, 66, 15]
arr.sort();
console.log(arr) //[1, 11, 15, 2, 3, 44, 5, 66]
function sortFun(a,b) {
return a-b;
}
arr.sort(sortFun)
console.log(arr) // [1, 2, 3, 5, 11, 15, 44, 66]
let arr = ['诸葛亮', '刘备', '关羽', '张飞']
// 只删除,不添加
arr.splice(2,1)
console.log(arr) // ['诸葛亮', '刘备', '张飞']
// 删除,再添加
arr.splice(2,1, '孙悟空', '猪八戒')
console.log(arr) // ['诸葛亮', '刘备', '孙悟空', '猪八戒']
// 只添加,不删除
arr.splice(2,0, '唐僧')
console.log(arr) // ['诸葛亮', '刘备', '唐僧', '孙悟空', '猪八戒']
let arr = ['诸葛亮', '刘备']
let arr2 = ['关羽', '张飞']
let arrNew = arr.concat(arr2);
console.log(arrNew) //['诸葛亮', '刘备', '关羽', '张飞']
let arr = ['诸葛亮', '刘备', '关羽', '张飞']
let str = arr.join(',')
console.log(str) //诸葛亮,刘备,关羽,张飞
let a = [1,1,2,3,3,2,3,4,5,6,7,3,2,3,4,5,3,2,2]
let b = [...new Set(a)]
console.log(b) //[1, 2, 3, 4, 5, 6, 7]
let a = [1,2,3,4]
let b = a.map(item=>{
return item * 2
})
console.log(a) //[1, 2, 3, 4]
console.log(b) //[2, 4, 6, 8]
let a = [1,2,3,4]
let b = a.filter(item=>{
return item > 2
})
console.log(a) //[1, 2, 3, 4]
console.log(b) //[3, 4]
let a = [1,2,3,4]
let b = a.find(item=>{
return item > 2
})
console.log(a) //[1, 2, 3, 4]
console.log(b) //3
let a = [1,2,3,4]
let b = a.findIndex(item=>{
return item > 2
})
console.log(a) //[1, 2, 3, 4]
console.log(b) //2
let a = [1,2,3,4]
let b = a.some(item=>{
return item > 2
})
console.log(a) //[1, 2, 3, 4]
console.log(b) //true
let a = [1,2,3,4]
let b = a.every(item=>{
return item > 2
})
console.log(a) //[1, 2, 3, 4]
console.log(b) //false
ES6 新增的数据类型,用于存储键值对的集合数据
let m = new Map();
m.set('诸葛亮', 58)
m.set('刘备', 38)
m.set('张飞', 35)
console.log(m.has('刘备')) // 是否存在key: true
console.log(m.get('诸葛亮')) // 58
console.log(m.delete('刘备')) // 删除key
console.log(m.get('刘备')) // undefined
是 ES6 新增的数据类型,是一组key的集合,但不存储value,由于key不能重复,所以用于存储不重复的数据集合
let s = new Set()
let s1 = new Set([1,2,3,3,'3'])
console.log(s) //{size: 0}
console.log(s1) //{1, 2, 3, '3'}
s.add(1)
s1.add(1)
console.log(s) //{1}
console.log(s1) //{1, 2, 3, '3'}
s1.delete(1)//
console.log(s1) //{2, 3, '3'}