正则表达式

问答

\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分别是什么?

  • \d代表正则表达式匹配数字
  • \w 代表查找单词字符,包含字母、数字、下划线
  • \s查找空白字符(空格、tab、换行、回车)
  • [a-zA-Z0-9] 查找小写a-z大写A-Z数字0-9的所有给定集合内的任何字符
  • \b匹配单词边界,指的是一个单词的结束,非单词字符,
  • . 查找单个字符,除了换行和行结束符的其他所有字符
  • * 匹配任何包含零个或多个的字符,默认是尽可能多的匹配
  • n+ 匹配任何包含至少一个 n 的字符串。
  • n?匹配任何包含零个或一个 n 的字符串,尽可能少的匹配,触发非贪婪模式
  • x{3}匹配至少3个x的字符串
    -^n匹配以n开头的字符串
  • n$匹配以n结尾的字符串

js中的闭包与定时器

1.什么是闭包?有什么作用?

闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(执行结束被释放)了之后。

  • 闭包是指将函数外部的变量保存在函数内部,以备函数执行的时候可以访问,即使这个外部变量本身被释放了,在这个内部函数执行的时候依然可以访问,凡是实现这种功能的都可以称为闭包。闭包最明显的特征是在一个函数中return出一个函数,通过这个函数访问外部的变量,是实现封装的基础。
  • 维持了一个独立的数据空间,使得程序可以在函数外部访问局部变量,一般用于模块封装,但是闭包会带来内存泄漏的危险。

js时间对象与引用类型

javascript数据类型中的基础类型有哪些?复杂类型有哪些?有什么特征?

  • 基本类型有number,boolean,string,null,undefined,它们的值存储在一块连续的栈内存中,单个数据占用内存较小。
  • 复杂类型有:object,Array,函数,正则,它们的值存储在堆内存中,变量中保存的只是一个指针,由指针指向存储值的堆内存。

js中的数组、字符创和数学函数

问答

  • 数组方法里push、pop、shift、unshift、join、split分别是什么作用。(*)
    • push在数组末尾添加一个元素
    • pop从数组末尾删除一个元素
    • shift把数组的第一个元素删除掉
    • unshift在数组的头部添加一个元素
    • join() 将数组里面的元素以一定的方式:()内参数,连接成字符串
    • split() 是字符串方法,将一个字符串以()里面的内容为分割点分解成数组
    • splice(start[, deleteCount][, values]) 以第一个参数为起点,第二个参数为位移作为一个,将第三个参数替换这个范围。第二个参数省略则为插入操作,第三个参数省略为删除操作,均改变原数组

js函数及基本使用

函数声明和函数表达式有什么区别

  • 函数声明:
      function 函数名称 (参数:可选){ 函数体 }

    1
    2
    3
    function sum(a){
    console.log(a);
    }
  • 函数表达式:
      function 函数名称(可选)(参数:可选){ 函数体 }

    1
    2
    3
    var sum = function(a){
    console.log(a);
    }
  1. 函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以省略这个标示符:
  2. 函数声明有声明前置,函数可以在函数声明之前调用,而函数表达式的函数只能在之后调用.
  3. 函数声明只能出现在程序或函数体内,它们 不能出现在Block(块)({ … })中,例如不能出现在 if、while 或 for 语句或者try/catch/finally中,而函数表达式可以出现在任何地方.

js数据类型和基本语法

JavaScript 定义了几种数据类型? 哪些是简单类型?哪些是复杂类型?

JavaScript是弱类型语言,一共定义了6种数据类型,

  • 5种简单的数据类型

    Null
    Undefined
    Boolean
    Number
    String

  • 还有一种复杂的数据类型——Object,Object本质是一组无序的名值对组合(属性和值),ECMAScript不支持自定义数据类型,所以任何值最终都是上述六种类型之一

js与同步、异步

CSS和JS在网页中的放置顺序是怎样的?

  • css一放在前面标签内,js则放在标签内部的最后面。

    解释白屏和FOUC

    1. 如果把样式放在底部,对于IE浏览器,如果是新打开网页或刷新页面等情况,浏览器会等待html和css全部加载完后在渲染页面,等待的过程会产生白屏问题,而不是将内容逐步展现
    1. 如果使用 @import 标签,即使 CSS 放入 link, 并且放在头部,也可能出现白屏
    1. 加载 JavaScript 时,会禁用并发,并且阻止其他内容的下载. 所以把 JavaScript 放入页面顶部也会导致白屏现象.
  • FOUC,即Flash of Unstyled Content无样式内容闪烁。
    • 当样式放在底部,对于IE浏览器,加载页面时会出现 FOUC 现象,逐步加载无样式的内容,等CSS加载后页面突然展现样式,也会出现页面的样式和css加载的样式相互覆盖。Firefox 会一直表现出 FOUC

常见布局原理及实现

负边距在让元素产生偏移时和position: relative有什么区别?

  • 负边距产生位移时,页面内的元素会根据位移后的位置进行渲染,并不占据原来的空间
  • position:relative是相对于元素本身做偏移,但是元素并不脱离文档流,原来所占据的空间依然会被保留。

前端基础问题(8)BFC与margin

在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?

  • 当两个或更多垂直外边距相遇时,它们将形成一个外边距。这个外边距的高度等于两个发生叠加的外边距的高度中的较大者。只有普通文档流中块框的垂直外边距才会发生外边距叠加。行内元素、浮动框、绝对定位框之间的外边距不会叠加。
,