【基础】前端学习直面JavaScript的疑难杂症,一次性解决。

一、数据类型

基础概念
  • 基本类型:string,number,boolean,null,undefiend,symbol
  • 引用类型:Function,Array,Object
  • 检测数据类型的方法:
    1,typeof (typeof 123)
    2,instanceof (123 instanceof Array)
    3,constructor (123.constructor = Array)
    4,Object.prototype.toString.call() ==> Object.prototype.toString.call("a") // "[object String]"
  • 深拷贝和浅拷贝的进阶学习请移步这篇文章:深拷贝浅拷贝的区别,以及如何手写实现深浅拷贝?
// 一个值得注意的实例
var str = 'hello'   ==>   typeof str  ==>  string
var str = new String('hello')  ==>   typeof str  ==>  object
开发中常见转化数据类型有哪些坑?

1,特殊类型的隐式转换 ( null, undefiend, 0, NaN, " " ==> false )
2,逻辑运算符 && 和 || 在隐式转换的情况下
3,== 和 === 的区别:
undefiend == null (true)
undefiend === null (false)

二、JS常见的内置对象

  • 三种包装对象:String、Number、Boolean

  • 其他的内置对象:Array、Function、Date、RegExp、Object

  • 面试常见的装箱和拆箱的理解:
    1,装箱:把基本数据类型转化为对应的引用数据类型的操作
    2,拆箱:把引用类型对象转化为对应的值类型对象

  • 栈和队列
    栈:先进后出,举例:脏衣篓
    队列:先进先出,举例:公交站排队

  • sort排序方法
    1,默认是升序
    2,将排序的元素转化为字符串['1','12','a'],找对应字符串的Unicode码表
    3,问题:[1,3,12,4,6,23].sort() => [1, 12, 23, 3, 4, 6]
    4,解决方案,定义一个比较器函数 sort(callback)
    5,【拓展】总结下有哪些排序方法?

// sort(callback)
// function(x,y)=>{return x-y}
var arr = [1,3,12,4,6,23]
arr.sort(function(x,y){
    return x-y  // 升序
    return x-y  // 降序
})
  • Date日期对象
    1, new Date().getDate()获取日期,getDay()获取礼拜几
    2,Date对象中getMonth()是从0-11排序,当前月份需要手动加一
    3,【拓展】如何自定义一个获取时间并格式化的方法?

  • 开发中的编码和解码
    1, escape() 和 unescape()
    基于ASCII(a-z,0-9)进行转码和解码
    2,encodeURI() 和 decodeURI()
    基于Unicode进行转码和解码
    3, encodeURIComponent() 和 decodeURIComponent()

三、JS的DOM

浏览器解析url全过程流程图
1, DOM树解析过程

image.png

1,构建render树: 渲染树 = DOM树 + CSS树
2,重绘和回流
reflow:当元素属性发生改变(宽、高、内外边距...)且影响布局时,产生回流,相当于刷新页面重新加载
repaint:当元素属性发生改变(字体,背景颜色,透明度...)且不影响布局时产生重绘,相当于不会刷新页面,动态的更新了内容。
重绘不一定会引起回流,但回流必将引起重绘

2, 事件绑定

二、面向对象

未完待续.....

你可能感兴趣的:(【基础】前端学习直面JavaScript的疑难杂症,一次性解决。)