美文网首页
2018-12-11

2018-12-11

作者: 海子小夜曲 | 来源:发表于2018-12-11 19:45 被阅读0次

    forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

     map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。

    flex-direction flex-wrap flex-flow justify-content align-items align-content

    order flex-grow flex-shrink flex-basis flex align-items

    模板字符串

    str.includes() 判断字符串是否含有某值  str.repeat(2)  字符串重复两次

    arr.includes() 判断数组是否含有某值。

    浅复制

    Object.assign()

    let objA = {

    name: 'hhee',

    getName() {

    console.log(this.name)

    }

    }

    let objB = {

    age: 19

    }

    const obj = Object.assign({}, objA, objB);

    obj.getName();

    Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

    如果要将一个已经声明的变量用于解构赋值,必须非常小心。

    // 错误的写法

    let x;

    {x} = {x: 1};

    // SyntaxError: syntax error

    上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。

    // 正确的写法

    let x;

    ({x} = {x: 1});

    字符串方法

    normalize()  将字符的不同表示方法统一为同样的形式。

    includes() startsWith()  endsWith()  返回布尔值

    第一个参数 传入 字符串  第二个参数传入数值  includes 和startsWith  两个方法中 表示从第二个参数开始查,endsWith表示从第二个参数结束。因为是 结尾嘛!

    ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

    'x'.padStart(5, 'ab') // 'ababx'

    'x'.padStart(4, 'ab') // 'abax'

    'x'.padEnd(5, 'ab') // 'xabab'

    'x'.padEnd(4, 'ab') // 'xaba'

    如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

    如果省略第二个参数,默认使用空格补全长度。

    'x'.padStart(4) // '  x'

    'x'.padEnd(4) // 'x  '

    padStart的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。

    '1'.padStart(10, '0') // "0000000001"

    '12'.padStart(10, '0') // "0000000012"

    '123456'.padStart(10, '0') // "0000123456"

    另一个用途是提示字符串格式。

    '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"

    '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

    箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

    箭头函数有几个使用注意点。

    (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

    (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

    (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

    let arrayLike = {

    '0': 'a',

    '1': 'b',

    '2': 'c',

    length: 3

    };

    console.log(Array.from(arrayLike))

    [ 'a', 'b', 'c' ]

    Symbol 属性访问  Object.getOwnPropertySymbols  成员是当前对象的Symbol值。

    Reflect.ownKeys方法可以返回所有类型的键名,包括常规键名和 Symbol 键名。

    Symbol() 生成独一无二的值  Symbol.for()生成可以重复的值

    yield表达式如果用在另一个表达式中,必须放在圆括号里。如果用作函数参数或者放在赋值表达式的右边,介意不加括号。

    forEach方法的参数是一个普通函数,不能使用yield表达式

    网友 vision57 提出,next()、throw()、return()这三个方法本质上是同一件事,可以放在一起理解。它们的作用都是让 Generator 函数恢复执行,并且使用不同的语句替换yield表达式。

    next()是将yield表达式替换成一个值。

    const g = function* (x, y) {

      let result = yield x + y;

      return result;

    };

    const gen = g(1, 2);

    gen.next(); // Object {value: 3, done: false}

    gen.next(1); // Object {value: 1, done: true}

    // 相当于将 let result = yield x + y

    // 替换成 let result = 1;

    上面代码中,第二个next(1)方法就相当于将yield表达式替换成一个值1。如果next方法没有参数,就相当于替换成undefined。

    throw()是将yield表达式替换成一个throw语句。

    gen.throw(new Error('出错了')); // Uncaught Error: 出错了

    // 相当于将 let result = yield x + y

    // 替换成 let result = throw(new Error('出错了'));

    return()是将yield表达式替换成一个return语句。

    gen.return(2); // Object {value: 2, done: true}

    // 相当于将 let result = yield x + y

    // 替换成 let result = return 2;

    相关文章

      网友评论

          本文标题:2018-12-11

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