ES6-ES10语法
ES5严格模式
用来消除语法中不合理,不严谨之处,让代码运行更安全,提高编译效率
限定内容
1.必须用var声明变量
2.函数的顶层不再指向window,而是undefined
2.不能定义和eval同名的变量,也不能创建相同的函数
4.禁止使用delete删除
5.禁止使用arguments,calee,caller
6.禁止使用with语句
// "use strict"
with(location) {
console.log(hash)
console.log(href)
console.log(pathname)
}
7.禁止函数参数重名
8禁止对象属性重名
9.禁止使用八进制的关键字
10.不允许在非函数的代码块内
列如:
“use strict"
b=23
console.log(b)
Object方法
1.Object.freeze()冻结一个对象(只能查询)
2.Object.isFrozen()是否冻结对象
3.object.seal()密封一个对象(不能添加和删除)
4.object.isSeal()是否被密封
5.Object.preventExtensions()让一个对象不可被扩展(不能添加)
ES6语法
let const
let类似于var,用来定义变量,但是let没有变量提升,只在代码块内有效
1.没有变量提升
2.代码块内,可以创建私有变量
if(true){
let a=12
}
console.log(a)//报错
3.解决事件循环机制问题
for(let i=1; i<5;i++){
setTimeout(function(){
console.log(i)
})
}
4.暂时性死区
只要在块级作用中声明let,他就会绑定在这个区域,不再受外界影响
let a=1
function fun(){
//暂时性死区
a=2
let a
console.log(a)//报错,只找函数下的a 不去找全局的
}
5不允许重复声明
if(true){
var a=12
let a=55
console.log(a)//报错,不能重复声明
}
const命令
const声明常量,一旦声明,常量的值不能改变
1.const具有let的所有特点,没有变量提升,代码块内可以定义为私有变量,不能重复声明,存在暂时性死区
var a=12
const a=55
console.log(a)//报错,不能重复声明
2.一旦声明,值不能改变
const pi = 3.14
console.log(pi)
// pi = 3.5
var num = pi * 3
console.log(pi)报错
3.本质:如果是基本类型的值,保证的是值不能改变,如果哟是引用类型的值,保证对象的地址不能改变,
const arr=[1,2,3]
arr[0]=66
console.log(arr)//[66,2,3]
const arr={a:"zxc"}
console.log(arr)//报错
面试题:var let和const区别
1.var有变量提升,let和const没有变量提升
2.var在函数下是私有变量,let const在代码块呢是私有变量
3var可以重复定义,let constby不可以重复定义
4.var 没有暂时性死区,let const具有let的所有特点,没有变量提升,代码块内可以定义为私有变量,不能重复声明,存在暂时性死区
5.const定义的基本类型值保证值不能改变,引用类型值保证地址不能改变
声明方法
var let const function class import
解构赋值 let [a, b, c] = [1, 2, 3]
console.log(a)
console.log(b)
console.log(c)
用来快速取出变量,减少语法写作
例如:
数组结构赋值
1.解构赋值可以为任何类型,只要结构相对应
let[a,b,c]=[1,{name:"aa"},[22,33]]
2.可以缺少变量和值,但是不能类型不对应
let[a,b,c]=[1,2]//c是undefined
let[a,b,]=[1,2,3]//3没有赋给变量
let[a,b,c]=[1,,3]//b是undefined
let[a,b,c]={}//报错,数组结构对象
let[a,b,c]=22//报错,数组解构基本类型值
3.可以与拓展运算符连用
let [a, b, c, ...d] = [1, 2, 3, 45, 6, 89]、、扩展运算符只能放置在最后一个变量
4可以设置模式
let [a, b, c = 22] = [1, 2, undefined]//替代undefined
5.对象结构赋值
var obj={name:"list",age:23}
let {age,name}=obj
console.log(age)
console.log(name)
给属性重新命名,但是输出原属性名称,则报错
var obj={name:"list",age:23}
let {age:a,name:b}=obj
console.log(a)
console.log(b)
console.log(age)
console.log(name)
其他类型:
ES6引用对象
字符串的扩展
1.includes(字符串,位置)是否找到了匹配值,返回布尔
2.startWidth()判断是否以某个字符串开头,返回布尔
3.endWidth()判断是否以某个字符串结尾,返回布尔
4.repeat()把一个字符串重复n次
5.padstart(长度,字符串)头补全字符串
6.padEnd(长度,字符串)尾补全字符串
consoloe.log("138".padstart(11,"*"))
摸版字符串
摸版字符串是为了让我们拼接字符串,或者读取变量更简单
语法
1.模板字符串要定义在反单引号里
2.调用变量写在${}表达式里
3.摸版字符串下支持转义字符,例如:/n
执行
var name ="李四"
`<h1>姓名:${name}</h1>`
做运算
`<h1>姓名:${3+4}</h1>`
做三元表达式
`<h1>${age==23? "yes":'no'}<h1>`
调用函数
`<h1>${name.replace('i','#')}<h1>`
执行js的语法
alert`123`
function fun(){
return "zxc"
}
console.log(`${fun()}`)
数字的扩展
number
1.二进制 用0b或0B开头
2.八进制 用0o或0O开头
3,isNaN()判断是否为数字
4.parseInt()转换成整数
5.parseFloat()转换成浮点数
6.isFinite()是否为一个有限值
7.isInteger()判断是否是整数
数学的扩展
属性和方法
1.trunc()去除一个数的小数部分
2.sign()判断一个数是正数,负数,零,正数返回1,负数返回-1,零返回0
3.cbrt()求立方根
4.imul()返回带符号整数的乘积,非数字返回0
5.hypot()返回所有参数的平方和的平方根
6.指数运算符 2**3 //2*2*2=8
bigInt
js的数字类型存储长度有限,bigint存储长度无限制,所以计算时不用考虑数字的溢出问题,可以计算大数字加法,列如银行的钱数,但是只能存储整形数字
最大整数
定义
var num =23n
类型typeof 66n bigInt
判断10==10n// true
转化BigInt("23")//23
bigInt(true)//1
1n+2n=3,
2+3n//类型不同不能直接计算
数据类型:number,string,boolean,null,undefined,bigInt,symbol,Object
数组下的扩展
扩展运算符
表示方式:...,用把数组遍历成一个序列
列如:var arr=[1,2,3,4,3,5]
[...arr]
属性和方法
1.from()将对象转换成数组
2.of()将多个参数转换成数组
3.find(函数)返回查找的值,没有返回undefined
4.findIndex(函数)返回查找的位置,没有返回-1
5.fill(值)把值填充整个数组
6.keys()遍历所有key值
7.values()遍历所有value值
8.enties()遍历所有键值对
9.includes()判断是否包含指定值,返回布尔类型
10.copyWithin(替换位置,提取开始位置,结束位置)将数组中的指定值进行交换,
数组的空位
当定义一个数组,数组下没有给赋值,则数组下表存储的是空位,空位不是unddfined和null
,他不能参与其他值转化参与运算,如果非要输出,会默认输出undefined,但是不同方式处理空位不一样,
1.for/in foreach every some都会跳出空位
2.map会让空位保留,但不参与运算
3.for of,string,join把空位视为undefined
正则
正则是用字母,数字,符号组成&
es6新增语法介绍
最新推荐文章于 2024-04-30 10:35:33 发布