一些杂乱问题

渐进增强与优雅降级

渐进增强:针对适配低版本浏览器的项目,对其进行重构,保证基本功能的情况下,对交互等方面的功能进行优化,提升用户体验
优雅降级:针对适配高版本浏览器的项目,一开始就具备完善的功能,对其进行低版本浏览器的兼容

获取字符串长度(支持表情)

正常情况下,获取字符串长度使用str.length即可
但当字符串中存在表情或部分汉字,会识别出两个长度,如😀、𠮷,会识别出两个长度

// 解决方法
let str = '😀、𠮷'
let arr = [...str] // 此时数组为 ['😀', '𠮷']
console.log(Array.from(arr)) // 2

z-index失效原因

  1. 父元素为relative
  2. 子元素为static(默认为static)
  3. 子元素有浮动

正则表达式实现添加括号

例如存在字符串 const str = '11+2-34+5/24+10/5',现在需要将高优先级运算,用小括号包裹起来,例如结果为 '11+2-(34)+(5/24)+(10/5)'。注意可能会出现连续的乘除运算,需要包裹到一起

let str = '11+2-34+5/24+10/5*5+5*7-8'
str.match(/([0-9]{1,}[/|*]){1,}[0-9]{1,}/g).forEach(item=>{
  str = str.replace(item, `(${item})`)
})
console.log(str) // 11+2-34+(5/24)+(10/5*5)+(5*7)-8

尾递归

递归:即在函数内部调用自己

// 例:斐波那契数列
function getCount(n) {
  if (n <= 1) {
    return 1
  }
  return getCount(n - 1) + getCount(n - 2)
}
// 时间复杂度为O(n)
// 该函数的递归返回值为两个自身的相加,因为相加操作的存在,必须在保留本次调用的基础上进行下次调用
// 所以对于getCount(10)的调用在最后一次调用会将之前的每次调用都保留下来,可能造成“栈溢出”

尾递归

// 使用尾递归计算斐波那契数列
function getCounts(n, count1 = 1, count2 = 1) {
  if (n <= 1) {
    return count2
  }
  return getCounts(n - 1, count2, count1 + count2)
}
// 时间复杂度为O(1)
// 尾递归是指递归时,函数的返回值与函数本身没有什么关联,他最后return出的要执行的部分不属于当前函数的计算部分
// 如列子中求取时,return出的结果仅为一个函数,即该结果可以单独执行,与当前函数无关
// 所以在执行return出的结果时,上一级函数不用放在栈中,节省出空间

判断数据类型的方法

  1. typeof
    数组、对象和null会被判断为object类型,其余能准确判断
const test = {
  str: '123',
  num: 123,
  obj: {},
  arr: [],
  boo: true,
  nul: null,
  und: undefined,
  func: () => {}
}
console.log(typeof test.str)    // string
console.log(typeof test.num)    // number
console.log(typeof NaN) // number
console.log(typeof test.boo)    // boolean
console.log(typeof test.und)    // undefined
console.log(typeof test.func)   // function
console.log(typeof test.nul)    // object
console.log(typeof test.obj)    // object
console.log(typeof test.arr)    // object
  1. instanceof
    可用于判断对象(函数、数组、对象等)的具体类型
const test = {
      str: '123',
      num: 123,
      obj: {},
      arr: [],
      boo: true,
      nul: null,
      und: undefined,
      func: () => {}
    }
    console.log(test.str instanceof String) // false
    console.log(test.num instanceof Number) // false
    console.log(test.boo instanceof Boolean) // false
    console.log(test.obj instanceof Object) // true
    console.log(test.arr instanceof Array) // true
    console.log(test.func instanceof Function) // true
  1. constructor
  2. object.prototype.tostring.call()

精度计算问题

0.1+0.2 !== 0.3

console.log(0.1+0.2 !== 0.3) // true
console.log((0.1+0.2).toFixed(1) === 0.3) // true

object.is()

用于比较两个值是否相等,大部分情况下与全等 === 一样,但能处理一些特殊情况

console.log(-0 === +0)  // true
console.log(Object.is(-0, +0))  // false
console.log(NaN === NaN)    // false
console.log(Object.is(NaN, NaN))    // true

判断空对象

通过转换成字符串来判断

const obj = {}
console.log(JSON.stringify(obj) === '{}')  // true

通过es6的object.key()进行判断

const obj = {}
console.log(Object.keys(obj).length === 0)  // true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容