let
- 用于声明变量
- let声明的变量不能重复声明
- let声明的变量不能变量提升
- 块状作用域
- 使用let声明的变量不属于顶层对象(window)
const:?
- 用于声明常量(一般用大写)
- 常量不能修改
- 块状作用域
- 使用const声明的常量也不属于顶层对象
结构赋值?
1.数组的结构
let [a, b, c, d] = [1, 2, 3, 4]
console.log(a)
2.?对象的结构
let {name:name, age:age} = {
name: "孙悟空",
age: 18
}
console.log(name, age)
3.?复杂对象
let obj = {
code: 200,
result: ["三国", "水浒", "红楼", "西游"]
}
let {result: [book1, , book3]} = obj;
console.log(book1, book3)
4.不使用第三个变量来交换值
[num1, num2] = [num2. num1]
for .. in..
let obj = {
a: 1,
b: 2,
c: 3
}
for (x in obj) {
console.log(x)//a, b, c
console.log(obj[x])//1, 2, 3
}
for of?
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<script>
var ps = document.querySelectorAll("p");
for (item of ps) {
console.log(item)
}
</script>
for of:纯数组与类数组集合均可遍历
for in:用于数组对象,获取的是key
forEach:用于纯数组
模板字符串 (反引号``)
- 定义比较长,复杂的字符串
- 可以插入变量
- 可以插入函数
let str2 = 'no';
let p = document.createElement("p")
p.innerHTML = `
<a href="###">
<span class="yes">${str2}</span>
<span>${rand(10,200)}</span>
</a>
`
function rand(min, max) {
return Math.round(Math.random() * (max - min))
}
console.log(p) args参数 - arguments是一个类数组对象
- args是纯数组对象?
?
function add() {
1.
let sum = 0;
for(let i = 0; i< arguments.length;i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(1,2,3,4,5))
function add(...args) {
let sum = 0;
args.forEach(function(item) {
sum += item;
})
return sum;
}
console.log(add(1,2,3,4,5))
箭头函数
对象简写?
let name = "ce";
let age = '18';
var obj2 = {
name,
age,
run() {console.log("快跑")}
}
console.log(obj2)
合并对象
Object.assign(obj1,obj2,obj3)
set
一种数据结构,数据成员唯一,没有索引
let set = new Set([1,1,2,3,4,5,6,7,7,8]);
console.log(set)
// for(x of set) {
// console.log(x)
// }
// set.add(7);
// set.delete(2);
// set.clear();
console.log(set)
set数组去重
//方法1.
function singleArr(arr) {
return [...new Set(arr)];
}
let arr = [1,1,1,4,5,6,6,7,8];
console.log(singleArr(arr))
// 方法2
Array.prototype.singleArr = function() {
return [... new Set(this)];
}
let arr1 = [1,3,3,4,4].singleArr();
console.log(arr1);
|