美文网首页
数组、函数、对象

数组、函数、对象

作者: sweetBoy_9126 | 来源:发表于2019-01-03 18:50 被阅读9次

数组


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]
  1. 函数参数的扩展
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
  1. 类数组对象转数组
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"}

上面的代码对对象的扩展,只能在另一个对象里用

函数


    1. 默认值
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 }如果传了对象,就使用你传递的对象

    1. 箭头函数
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()

相关文章

  • JavaScript中对象数组函数区别及区分

    一、对象、数组、函数区别  javaScript中对象包括狭义对象(object)、数组(array)、函数(fu...

  • JS对象数组转换

    对象转数组 数组转对象 字符串拼接函数

  • ES6

    let const 解构赋值(数组、对象、字符串、函数) 数组 对象 字符串 函数的参数 Arrow Functi...

  • 类型对象、函数、数组

    对象声明 函数 数组

  • 数组、函数、对象

    数组 1.扩展...就相当于把数组里的元素从它的中括号中拿出来,去掉它的外壳比如: 函数参数的扩展 类数组对象转数...

  • 2019-03-25函数的不同的调用方式

    普通函数 构造函数---通过new 来调用,创建对象 对象的方法 数组里面的函数调用:

  • ts 数据类型

    数据类型 1. 基础类型数据 2. 引用类型 对象和数组对象和数组.png 函数函数修饰词.png

  • es6 变量的解构赋值

    1、数组 2、对象 3、函数参数

  • arguments对象

    arguments对象(不定型参数) arguments对象:在函数体内具有数组功能的一个对象。但不是数组对象...

  • 析构函数

    对象数组每创建一个对象,调用一次析构函数,而对于对象指针对象对象指针对象数组

网友评论

      本文标题:数组、函数、对象

      本文链接:https://www.haomeiwen.com/subject/rujqrqtx.html