做前端的小伙伴都知道,前端是一个发展很快的行业,各种流行框架,工具层出不穷,很多时候,刚刚熟练一个框架,又一种新的框架出现了,这个时候如果基础知识不扎实,对基础理解不透彻,那么学习新的东西会很吃力,没有办法深入的去理解其中的原理,会走不少弯路,所以基础是非常非常重要的。
我作为一名转行的前端开发人员,深切体会到基础的重要性,所以我会在业余时间,经常会看一看前端的基础知识,每一次都有更深的理解,对自己在工作中有很大的帮助。
下面我总结一下前端所必须要掌握的基础知识:
一、数据类型:
(1)基本类型:五种
undefined、null、boolean、Number、String
检测基本类型:使用 typeof ;注意:使用typeof null 会返回object,null表示一个空对象指针。
(2)引用类型:object、Array、RegExp、Date、Function、特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)。
引用类型是保存在内存中的对象,引用类型的值是按引用访问,javaScript在操作对象时,实际上是操作对象的引用而不是实际的对象。
检测引用类型,根据它的原型链来判断:instanceof
(3)两种数据类型的区别:
① 引用类型值可添加属性和方法,而基本类型值则不可以。
② 在复制变量值时,基本类型会在变量对象上创建一个新值,再复制给新变量。此后,两个变量的任何操作都不会影响到对方;而引用类型是将存储在变量对象的值复制一份给新变量,但是两个变量的值都指向存储在堆中的一个对象,也就是说,其实他们引用了同一个对象,改变其中一个变量就会影响到另一个变量。
二、重要数据类型的常用方法:
(1)Array类型
①检测数组:
使用Array.isArray(arr)和Oblect.prototype.toString.call(arr)是比较好的方法,其他方法的缺点可以查看一下文章:js检测是否为数组的方法
②数组去重至少知道3种 数组去重的常用的3种方法
③数组排序至少知道3种方法数组排序的方法
④数组提供的api用法和区别:
push(),pop(),unshift(),shift(),reverse(),sort(),slice(),splice(),indexOf(),every(),some(),filter(),forEach(),map(),reduce(),concat()
(2)正则表达式 正则表达式基础知识
(3)string类型
①字符方法:charAt(),charCodeAt();字符串操作法:concat(),slice(),substr(),substring();
字符串位置方法:indexOf(),lastIndexOf();
trim()方法;字符串大小写转换:toLowerCase()、toUpperCase();
字符串模式匹配方法:match(),search(),replace(),split(),fromCharCode()
②字符串去重字符串去重
(4) Math()对象
①min(),max(),如找出数组中的最大,最小值,可以向下面这样使用:
var arr = [1,2,3,4,5];
var max = Math.max.apply(Math,arr);
巧妙的把Math对象作为apply()的第一个参数,正确的设置this指向
②舍入方法
Math.ceil(),Math.floor(),Math.round()
③随机数
Math.random()
④其他方法
Math.abs(),Math.PI()...