前端那些事

来源:互联网 发布:醉游网络 编辑:程序博客网 时间:2024/05/19 03:17

本博文会持续更新,记录coding遇到的各种奇怪问题


Q1 当div,p标签包裹的是数字英文时,有可能自动换行的情况

这里写图片描述

这里写图片描述

  这里出现了换行,原因是第二个p标签里的内容已经超出容器的宽度,而且浏览器默认当单词长度溢出容器,会自动换行。
  在CSS3里面,针对这种情况,给出了word-break 属性(在恰当的断字点进行换行)和word-wrap(允许长单词换行到下一行)


Q2 JavaScript调用事件回调函数的上下文问题
这里写图片描述

这里alert出来是undefined,要想引用Name需要先使用self指向this,然后使用self.Name调用即可,实在想不通这样设计的作用 -_- !!


Q3 JavaScript的sort函数问题

在红宝书中就提到js的sort方法是按字符编码排序的,今天在做LeetCode的时候发现[-1,-2,-3].sort( )结果还是[-1,-2,-3],看了W3CSchool的API发现:
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
所以,需要这样写[-1,-2,-3].sort( (a,b)=>{return a-b} ) 。

Q4 不严谨的操作

var a = [ ]
a[0] = 0
a[2] = 2
a.length // 3
a[1] // ‘undefined’
数组中还可以使用字符串作为键值但不算入数组长度,所以遍历数组的时候要判断值是否为“undefined”


JS的数字类型是IEEE754标准的双精度浮点数,所以严格来说没有整数,在ES6中Number.isInteger()来检测是否为整数,而且按照IEEE754的标准,所能呈现的最大整数是2^53-1。还有,需要注意这种情况,0.1+0.2 === 0.3 ,结果为false,因为浮点数精度的问题,所以要设置一个误差函数。

JSON.stringify( )将JSON对象序列化为字符串,当遇到undefined,function,symbol会自动忽略,然后返回null(undefined指没赋值过,null是曾赋值但当前为空)


Q5 页面无限滚动加载的性能优化
基于DOM回收,懒加载,Tombstones,滚动锚定。
文章链接:
https://juejin.im/post/58a3c81e128fe10058c57a8b

http://www.jianshu.com/p/2f3bc2598dc5?utm_source=funteas.com&utm_medium=article&utm_content=web

原创粉丝点击