字符串和em

113 阅读2分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

今天我们来看看字符串和em的两个题

  • 字符串对象中的substring函数和slice函数的区别?

简单小结如下

相同点:
(1)substring与slice都是用于字符串截取
(2)都可以接受两个参数start和end,分别表示开始索引和结束索引位(不包含end位置)
不同的是:
(1)如果end<start
substring会将start和end交换;
而slice会直接返回空串,表示没截取到
(2)如果start或者end有负数
substring会把小于0的数,当成0来计算
而slice允许是负数,表示倒数第几位开始或结束

还有一道和em有关的题,问s5、s6的font-size和line-height分别是多少px?

结构
<div class="p2">
    <div class="s5">1</div>
    <div class="s6">1</div>
</div>
样式
.p2 {font-size: 16px; line-height: 2;}
.s5 {font-size: 2em;}
.s6 {font-size: 2em; line-height: 2em;}

答案:
p2:font-size: 16px; line-height: 32px
s5:font-size: 32px; line-height: 64px
s6:font-size: 32px; line-height: 64px

解释:
em是一种相对单位,相对于元素的字体大小(font-size),比如2em 表示当前字体大小的 2 倍

相对长度单位规定相对于另一个长度属性的长度。相对长度单位在不同渲染介质之间缩放表现得更好

p2 line-height: 2自身字体大小的两倍
s5 数字无单位行高,继承原始值,s5的line-height继承的2,自身字体大小的两倍
s6 无需解释

最后再来看看如何找到数组arr中的最大值,写

有以下三种方法 一种是利用arr.sort方法,将数组排序,然后找出第一位即可

第二种是直接使用Math.max方法,但是需要主要的是该方法接收的不是一个数组,所以需要用到扩展运算符

第三种是用for循环

var arr = [1,3,4,-1,0,10,15,7]
方法1
var max = arr.sort(function (a, b) {
    return b - a
})[0]
方法2
var max = Math.max(...arr);
方法3
var max = -Infinity
for (var i = 0; i < arr.length; i++) {
    if (max < arr[i]) {
        max = arr[i]
    }
}