JS数据类型
- 共8种。 其中7种原始类型:
null
、undefined
、String
、Number
、Boolean
、BigInt
、Symbol
- 1种复合类型:
Object
。除了原始类型的剩下全是复合类型,比如原生对象、数组、函数、正则、宿主对象...
BigInt :可以表示任意大的整数
// 创建BigInt,只需在整数的末尾追加n即可
let a = 12333333333n * 3411452222n;
Symbol:
let key = Symbol()
let obj = {}
obj[key] = 'jirengu'
变量声明提升、let与var的区别
var 和 function 的提升,let 和 const不提升;let有块级作用域。
暂时性死区。创建、初始化、赋值,var是创建后立即初始化未undefined,let是创建后等赋值时初始化。未初始化就使用就会报错。
console.log(a) // undefined
console.log(b) // 报错 Uncaught ReferenceError: b is not defined
var a = 1
let b = 2
let c = a + b
箭头函数和普通函数区别
主要是this的差别,箭头函数里面的this是外面的this。
如果把箭头函数转换为不用箭头函数的形式,如何转换:
转换案例
const obj = {
a: 1,
fn: () => {
console.log(this.a)
}
}
//转换成
var _this = this
var obj = {
a: 1,
fn: function fn() {
console.log(_this.a)
}
}
undefined和null区别
相同点:都代表“空”、“未定义”。
不同点:
- 类型不同,undefined的类型是undefined, null的类型是对象;
- undefined一般代表未初始化,null一般代表一个尚未设置的对象的占位符。
- undefined 在有些场景下(函数内)能重新赋值(所有有时候用void 0 表示undefined),null不能
用正则实现 trim()
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g, '')
}
//或者
function trim(string){
return string.replace(/^\s+|\s+$/g, '')
}
使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示:var re = /ab+c/
^
:匹配字符串的开始
$
:匹配字符串的结束
\s
:匹配任意的空白符
+
:重复一次或更多次
x|y
: 匹配‘x’或者‘y’
g
:全局搜索
网友评论