メ遇见°
メ遇见°
1、一共有六种,null、undefined、number、Boolean、string、symbol,其中symbol为es6新增。 2、null通过typeof打印是对象。 3、基本数据类型存在栈中,直接存入的是值。复杂数据类型在栈中存入的是地址,该地址指向堆内存,在堆内存存入的是具体值。因此,在拷贝时,基本数据类型拷贝的是具体值,而复杂数据类型拷贝的指向堆内存的引用地址。
语义化就是让文本内容来结构化,选择与语义相符合的标签,使代码语义化,这样不仅便于开发者进行阅读,同时也能维护和写出更优雅的代码,还能够让搜索引擎和浏览器等工具更好的解析。
1、块级元素,设置宽高,需要谁居中,给其设置 margin: 0 auto; 2、行内元素:首先看它的父元素是不是块级元素,如果是,则直接给父元素设置 text-align: center; 如果不是,则先将其父元素设置为块级元素,再给父元素设置 text-align: center; 3、使用绝对定位:首先设置父元素为相对定位,再设置子元素为绝对定位,设置子元素的left:50%,即让子元素的左上角水平居中; 4、使用flexbox布局,只需要给待处理的块状元素的父元素添加属性 display: flex; justify-content: center;
闭包就是有权在一个函数去访问另一个函数的变量。通常是在一个函数内部创建一个函数。 作用: 封装私有变量。 实现JS的代码块。
1、ES6中新增了数据类型set,set的一个最大的特点就是数据不重复。Set函数可以接受一个数组(或类数组对象)作为参数来初始化,利用该特性也能做到给数组去重。 function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return } return [...new Set(arr)] } 2、数组的indexOf()方法可返回某个指定的元素在数组中首次出现的位置。该方法首先定义一个空数组res,然后调用indexOf方法对原来的数组进行遍历判断,如果元素不在res中,则将其push进res中,最后将res返回即可获得去重的数组。 function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return } let res = []...
节流: 指的是高频事件在规定时间内只执行一次,执行一次后,只有大于设定的执行周期后才会执行第二次。 应用场景: 实现dom元素的拖拽功能。 计算鼠标移动的距离。 监听滚动事件判断是否到页面底部自动加载更多:给 scroll 加了 debounce 后,只有用户停止滚动后,才会判断是否到了页面底部;如果是 throttle 的话,只要页面滚动就会间隔一段时间判断一次。 ` var processor = { timeoutId: null, //实际进行处理的方法 performProcessing: function(){ //实际执行的代码 }, //初始处理调用的方法 process: function(){ clearTimeout(this.timeoutId); var that...
JSON.stringify是浏览器高版本带的一个将JS的Objtect对象转换为JSON字符串的一个方法JSON.stringify 的一些 规则以及注意点:当对象为number,null,boolean的时候,直接转换为相应的字符串就可以了。但是 string,function,undefined,object,array等,都需要特殊处理。 1.undefined,该类型使用JSON.stringify处理的时候,如果对象就是undefined,将会输出"undefined",如果 对象是数组的元素,那么将会变成null,比如:[undefined],stringify之后变成了"[null]";如果该对象是object 的元素,那么该属性将当作不存在,不输出,比如{a:1,b:undefined},stringify之后是"{\"a\":1},B属性直接 被抛弃。 2.字符串在拼接的时候需要把内部的双引号处理掉 //JSON.stringify的主函数 var simpleTypes = ["number", "boolean", "undefined", "string", "function"]; function stringify(object){ var type = typeof object; //如果是简单类型,则直接返回简单类型的结果 if(indexOf(simpleTypes, type) > -1){...
const a = { i: 1, toString: function () { return a.i++; } } if(a == 1 && a == 2 && a == 3) { console.log('Hello World!'); }
防抖(debounce)在n秒内函数只被执行一次,如果在这个时间内再次被触发,则需要再次计算时间。 应用场景: 1、文本输入框的验证,输入完成之后验证一次即可,不需要每次都发请求验证。 2、size/scroll的触发统计事件。 实现: ``` function debounce(fn, delay, immediate) { let timer = null; return function() { const context = this; const args = arguments; let result = undefined;...
1、使用clear:both。 2、使用伪类before after 元素。 3、使用overflow:hidden。