数组
1.扩展
...就相当于把数组里的元素从它的中括号中拿出来,去掉它的外壳
比如:
var a = [1, 2]
console.log(...a) // 1, 2
var b = [...a, 3]
b // [1, 2, 3]
var c = b.concat([4, 5])
var d = [...b, 4, 5]
- 函数参数的扩展
function sort(...arr){
console.log(arr.sort())
}
sort(3, 1, 5) //[1, 3, 5]
function max(arr){
return Math.max(...arr)
}
max([3, 4, 1]) // 4
- 类数组对象转数组
let ps = document.querySelectorAll('p');
Array.from(ps).forEach(p=> {
console.log(p.innerText);
});
[...ps].forEach(p=>{console.log(p.innerText)});
4.对象的扩展
var a = {id:1}
var b = {name: 'a',age: 'b'}
var c = {...a,...b}
console.log(c)
//{id: 1, name: "a", age: "b"}
上面的代码对对象的扩展,只能在另一个对象里用
函数
- 默认值
function sayHi(name='jirengu') {
console.log(`hi, ${name}`)
}
sayHi() //hi, jirengu
sayHi('ruoyu') //hi, ruoyu
function fetch(url, { body='', method = 'GET', headers = {} } = {}) {
console.log(method);
}
fetch('http://example.com')
以下两种写法的区别?
//ex1
function m1({x = 0, y = 0} = {}) {
return [x, y];
}
//ex2
function m2({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
// 函数没有参数的情况
//ex1你不传参数默认等于{}
//就相当于{undfined,undefined}所以x和y就还会用默认值0,0
m1() // [0, 0]
//ex2你不传参数默认等于 { x: 0, y: 0 },所以x是0,y是0
m2() // [0, 0]
// x 和 y 都有值的情况
//这种情况下都会使用新的值代替默认值
m1({x: 3, y: 8}) // [3, 8]
m2({x: 3, y: 8}) // [3, 8]
// x 有值,y 无值的情况
//ex1就相当于{x=0,y=0}={x: 3}
m1({x: 3}) // [3, 0]
//ex2相当于{x, y}={x:3,y:undefined}
m2({x: 3}) // [3, undefined]
// x 和 y 都无值的情况
//ex1相当于{x = 0, y = 0} = {x:undefined,y:undefined}所以都取默认值
m1({}) // [0, 0];
//ex2相当于{x, y}={}={x:undefined,y:undefined}
m2({}) // [undefined, undefined]
//传入一个没有用到的对象属性,等同于传入一个空对象
m1({z: 3}) // [0, 0]
m2({z: 3}) // [undefined, undefined]
ex1: 调用函数需要你传递一个对象,如果你没传对象就用默认值对象{},默认值对象里面都是 undefined, 所以属性使用初始值
ex2:参数需要是一个对象,如果没传对象,就用默认值对象{ x: 0, y: 0 }如果传了对象,就使用你传递的对象
- 箭头函数
var f = v => v+1
//等价于
var f = function(v){return v+1}
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
var arr = [1, 2, 3]
var arr2 = arr.map(v=>v*v)
arr2 //[1, 4, 9]
对象
var name = 'jirengu'
var age = 3
var people = {name, age} //{name:'jirengu', age:3}
let app = {
selector: '#app',
init() {
},
bind() {
}
}
app.init()
网友评论