入前端以来,易混肴的前端知识,及一点想法。

Posted yuqlblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入前端以来,易混肴的前端知识,及一点想法。相关的知识,希望对你有一定的参考价值。

前言:感觉任何行业开始都离不开一个借鉴,随着时间的积累,变得熟能生巧。能分辨出利于自己的,或是好用的。这篇文章算是一个积累或者在这个行业本人的部分映射/走向,随缘更新,大部分都是自己常用,但可能掉坑的,督促自己背下来。

零.趋势,前端顶峰,安全

  2019的主体:

  GraphQL
  TypeScript

  React

  flutter

一. CSS

  1. x:nth-of-type(n) 获取父元素下,的第 n 个 x 元素,tips:n 从 0 开始。(注意我的断句!)

  2.x:nth-child(n)     x的父元素下,第 n 个元素,假如刚好是 x,则有效,tips:n 从 1 开始。

  3.x:last-child  x的父元素下,最后一个子元素,恰好为 x

 

  1. overflow-y:auto 对于 overflow-y:scroll ,同样是对容器上下内容的裁剪,auto 比 scroll 更智能,超出显示滚动条,否则隐藏

 

  1.transition 过渡

  2.transform 变换

  3.animation 动画

  tips:参考 https://segmentfault.com/a/1190000004460780

二:Promise

  1.Promise.all 的使用注意

  

Promise.all(arr).then(res => 
    // 注意这里 item => 不加括号等于  return JSON.parse(item.data).result )        切记箭头函数与Promise的组合使用,一定要有return
      return res.map(item => JSON.parse(item.data).result )
    ).then(data => 
      console.log(data)
    )

 

三:ES6整理

  1.函数默认参数  function fn (num = 200) console.log(num) ;  fn() 或 fn(300);

  2.async await 可避免回调地狱。async function 大于 Promise,当然在多个 await 之间没有关联时, async await 假若出错将会中断执行,所以建议加上 try 多条await语句位置 catch (e) ;高端:let [a, b, c] = await Promise.all([fn1(), fn2(), fn3()])

四:this

const obj = 
    a: function()  console.log(this) ,
    b: 
        c: function() console.log(this)
    

obj.a()  // 打出的是obj对象, 相当于obj.a.call(obj)
obj.b.c() //打出的是obj.b对象, 相当于obj.b.c.call(obj.b)

  1. 概念:this是函数用call方法调用时传递的第一个参数,而且它还可以手动更改,只有在调用的时候才能确定this的值。

/* 
简单总结一下:函数完整的调用方法是使用call方法,包括test.call(context, name)和obj.greet.call(context,name),这里的context就是函数调用时的上下文,也就是this,只不过这个this是可以通过call方法来修改的;构造函数稍微特殊一点,它的this直接指向new之后返回的对象;window.setTimeout()和window.setInterval()默认的是this是window对象。
*/

  2.箭头函数默认绑定(继承)外层 this,并且无法使用call修改,引用MDN:箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。

  3.修改this默认为window的setTimeout

const obj = 
    a: function() 
        console.log(this)
        window.setTimeout(() =>  
            console.log(this) 
        , 1000)
    

obj.a.call(obj)  //第一个this是obj对象,第二个this还是obj对象

 五:关于 JQuery 完成使命,即将退出舞台

  1.querySelector,querySelectorAll 快速获取DOM节点

  2.classList 代替 addClass,removeClass

  3.Animate.css

  4.原生Fetch API(IE无法使用,需要配合Polyfill)及 axios 代替jq封装的ajax

 六、超出隐藏

  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;/*最后添加省略号*/

   去浮动

.clearfix:after 
    content: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
    overflow: hidden;

 七、居中

.el 
    display: flex;
    align-items: center;
    justify-content: center;

 八:const 变量的内部状态是可修改的

 九:文字不可选

.noselect 
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;

 十:回调函数带参将失去 this 指向

// 若参数 cb 改为 cb(),则失去 this 指向
fn(param, cb) 
    cb()

cb () 
    console.log(this)  

 十一:push 返回的是长度,所以请严格按照顺序书写,另外参照第【十八】的不可变性,我们可以使用 concat 代替 push 创建数组的副本

let arr = [3]
arr.push(4) // 2
console.log(arr) // [3, 2]

 十二:find 与 filter 的区别,两个方法的原数组都不变,find 查出的是第一个符合的对象,不是数组。

 十三:box-sizing: border-box 只需设置 width 与 height,line-height,不需要设置padding。

 十四:export 导出

1.export default  xxx  // 一个 js 文件中只能一个
2.export const obj = [ xxx ] // 一个 js 文件中可以多个,等同于3
3.const obj = [ xxx ]
    export  obj 
    export  obj2 
    ...
 import * as common from ‘./common.js‘ // webpack中加载依赖,common.obj
 import obj, obj2 from ‘./common.js‘

 十五:forEach 及 for...of 的比较

// forEach进行数组遍历
// 缺点:不能使用breack语句中断循环,不能使用return语句返回到外层函数

// for...in 辣鸡,用来遍历对象属性,且遍历出来的属性还是字符串

// for...of 无敌,规避forEach的缺点,额外支持类数组【DOM】,字符串。
// 缺点:数组的遍历器接口只返回具有数字索引的属性,假如 myArray.foo = ‘foo‘,则无法遍历出来。

for (var value of myArray) 
  console.log(value);

// 遍历键名
for (let index of [‘a‘, ‘b‘].keys()) 
  console.log(index);

// 遍历键值
for (let elem of [‘a‘, ‘b‘].values()) 
  console.log(elem);

// 遍历键值对
for (let [index, elem] of [‘a‘, ‘b‘].entries()) 
  console.log(index, elem);

 十六:apply、call、bind 分析与扩展运算符的替代 (...)

 十七:js数组方法forEach、map、filter、reduce、every、some总结

map() // 返回一个新的Array,每个元素为调用func的结果 
filter() // 返回一个符合func条件的元素数组 
some() // 返回一个boolean,判断是否有元素是否符合func条件 
every() //返回一个boolean,判断每个元素是否符合func条件 
forEach() //没有返回值,只是针对每个元素调用func 
reduce() //有返回值,重点是计算数组,返回一个值

1、map速度比forEach快 
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组, 
3、map因为返回数组所以可以链式操作,forEach不能

 

十八:不可变性,即创建一个新的副本有利于历史朔源

1.let obj3 = Object.assign(, obj1, obj2)
2.let obj3 =  ...obj1, obj2 
3.Array.slice() // 能创建该数组的一个副本

 

以上是关于入前端以来,易混肴的前端知识,及一点想法。的主要内容,如果未能解决你的问题,请参考以下文章

前端知识总结

web前端知识总结

前端小知识点积累

前端JS基础知识,先把这一点基础知识学会,在学难点知识!!!

自己总结的web前端知识体系大全欢迎补充

前端知识架构及自己的职业发展思考