面试题
qq_38785020
这个作者很懒,什么都没留下…
展开
-
正则正向预查和负向预查
编写一条正则,用来验证规则:一个6-16位的字符串,必须同时包含有大小写字母和数字 /* 检查的时候设置一个条件 正向预查(?=pattern) 意思的要匹配的字符串必须满足pattern这个条件 需要注意的是:括号里的内容只是条件,并不参与真正的捕获,只是检测一下后面的字符串是否符合要求而已 负向预查(?!pattern) 意思的要匹配的字符串必须不满足pattern这个条件 var reg1 = /(?=^)\d{2}(?=$)/ var reg2 = /^\d{2}$/ // reg1 跟 reg2原创 2021-06-08 11:21:24 · 434 阅读 · 0 评论 -
图片懒加载
编写代码实现图片的懒加载 前端性能优化的重要方案 通过图片或者数据的延迟加载,我们可以加快页面的渲染的速度,让第一次打开页面的速度变快 只有滑动到某一个区域 我们才加载真实的图片 这样也可以节省加载的流量 处理方案 把所有需要延迟加载的图片用一个盒子包起来,设置宽高和默认占位图 开始让所有的IMG的src为空,把真实图片的地址放在IMG的自定义属性上,让IMG隐藏 等到所有其他资源加载完成后 我们再开始加载图片 对于很多图片 需要当页面滚动的时候,当前图片区域完全显示出来后再加载真实图片 代码的实现 /原创 2021-06-03 10:41:09 · 85 阅读 · 0 评论 -
在不同地方调用类的属性
/* */ function Foo() { Foo.a = function() { console.log(1) } this.a = function() { console.log(2) } } // 把Foo当作类,在原型上设置实例公有的属性方法 实例.a() Foo.prototype.a = function() { console.log(3) } // 把Foo当作普通对象设置私有属性的方法 Foo.a() Foo.原创 2021-06-03 10:38:42 · 69 阅读 · 0 评论 -
网址正则检测
/* 在输入框中如果判断输入的是一个正确的网址 例如:用户输入一个字符串,验证是否符合URL网址的格式 */ function checkURL(url) { // \w 元字符用于查找单词字符。单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。 /* 协议 ((http|https|ftp):\/\/)? 域名 (([\w-]+\.)+[a-z0-9]+) 路径 ((\原创 2021-06-03 10:36:45 · 1062 阅读 · 1 评论 -
Object对象
/* 输出下面代码运行结果 */ // example 1 var a={},b="123",c=123; a[b]='b' a[c]='c' console.log(a[b]) // c 对象里面的key都是字符串 console.log(a); // 因为a[123] = a["123"] // example 2 var a = {}, b = Symbol("123"), c = Symbol(123); a[b]='b' a[c]='c' console.log(a[b]) // b t原创 2021-06-03 10:35:11 · 74 阅读 · 0 评论 -
重写indexOf方法
实现一个字符串匹配算法,从字符串 S 中,查找是否存在 T,若存在则返回所在位置,不存在则返回-1 如果不用indexOf/includes等内置方法,你会如何处理 let S = "zhufengstart开始zhufengend结尾HAHAHAHA"; let T = "iii"; ~(function() { /* 使用正则的情况下的方法 */ /* function myIndexOf(data) { let str = this; let reg = new RegExp原创 2021-06-03 10:32:42 · 348 阅读 · 0 评论 -
转换大小写字母
转换大小写字母 如 abC 转为 ABc let str = "zhufeng哈哈哈HAHAHA" // "A".charCodeAt() 转为Unicode码 // console.log("A".charCodeAt()) str = str.replace(/[a-zA-z]/g,item => { // 验证是否为大写字母: // 转为大写字母看是否与原字符相等 // 对比ASCLL嘛 大写字母A-Z 为 65-90 /* if(item.charCodeAt(原创 2021-06-03 10:29:37 · 85 阅读 · 0 评论 -
箭头函数与普通函数的区别
常见问题 箭头函数与普通函数(function)的区别是什么? 构造函数(function)可以使用New生成实例,那么箭头函数也可以吗?为什么? 箭头函数与普通函数的区别: 箭头函数在语法上比普通函数更为简洁(ES6语法形参的默认值与剩余参数都适用于箭头函数和普通函数) 箭头函数没有自己的this,他里面的this是继承函数所处上下文,没有继承函数就是window(用call,applay等任何方法都无法改变箭头函数的this的指向) 普通函数的this指的是函数的调用者 箭头函数没有argumen原创 2021-06-03 10:24:27 · 209 阅读 · 0 评论 -
数字链式相加
(5).add(3).minus(2) 使其结果为6 ~function(){}() 与 (function(){})() 一样的 都是立即执行函数的意思 ~(function() { // 每一个方法执行完后都要返回这个Number类的实例, //这样才能继续调用Number原型上的方法(链式写法) function check(n) { // 转换为数字 //Number() -- 强制转换整个参数;parseInt()/parseFloat() -- 专门将字符串转换为数原创 2021-06-03 10:03:21 · 91 阅读 · 0 评论 -
call和applay的区别
call和applay的区别是什么 call applay 都是function原型上的方法 都是改变函数的this指向 fn.call(obj,1,2,3) 参数是不定的 传给函数的参数是一个一个的传递的 fn.applay(obj,[1,2,3]) 参数只有两个 传给函数的参数是用一个数组包裹起来传递的 除了这两个 bind也可以改变this的指向 只不过bind不会立马执行函数 只是先改变this的指向 call和applay哪个性能更好 性能:call 性能要好一点 别人测试过的:当给函数传的参原创 2021-06-03 09:58:46 · 841 阅读 · 0 评论 -
闭包的理解
1、概念 闭包函数: 声明在一个函数中的函数,叫做闭包 闭包: 内部函数总是可以访问其所在外部函数声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后 2、特点 让外部访问函数内部变量成为可能; 局部变量会常驻在内存中; 可以避免使用全局变量,防止全局变量污染; 会造成内存泄漏(有一块内存空间被长期占用,而不被释放); 3、闭包的创建 闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。 闭包会发生内存泄漏,每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建一个新的原创 2021-06-03 09:54:25 · 2640 阅读 · 0 评论