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))
箭头函数
- 简化回调函数的写法
- 箭头函数中的this是函数声明时所在的对象
// 箭头函数 let rand = (min, max) => Math.round(Math.random() * (max - min)) console.log(rand(3,7))
elements.map(function(element) { return element.length; }); // 返回数组:[8, 6, 7, 9] // 上面的普通函数可以改写成如下的箭头函数 elements.map((element) => { return element.length; }); // [8, 6, 7, 9]
-
检测是否是数组
- Array.isArray(arr) 返回true or false
对象简写
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);