前端笔试题记录(一)

常考输出题

setTimeout(function() {
    console.log('1')
}, 3000)
new Promise(function(resolve) {
    console.log('2')
    let a = 12
    for (var i = 0; i < 100000; i++) {
        a += i
    }
    resolve()
}).then(function() {
    setTimeout(function() {
        console.log('3')
    })
    console.log('4')
})
console.log('5')
// 2 5 4 3 1 
function Foo() {
 var i = 0
  return function() {
      console.log(i++)
  }
}
var f1 = Foo()
f2 = Foo()
f1() //0
f1() //1
f2() //0
const promise1 = new Promise((resolve, reject) => {
    console.log('promise1')
    resolve('resolve')
})
const promise2 = promise1.then(res => {
    console.log(res)
})
console.log('1', promise1)
console.log('2', promise2)

在这里插入图片描述

console.log({} === {}) //false
console.log(NaN == NaN) //false
console.log(typeof null === 'object') //true
function test(a) {
            if (a) {
                console.log('true')
            } else {
                console.log('false')
            }
        }
        test('undefined') //true
        test('false') //true
        test('') //false
for (var i = 0; i < 10; i++) {
   setTimeout(function() {
        console.log(i)
    }, 1000)
}
//10个10
console.log(['1', '2', '3'].map(parseInt)) //1,NaN,NaN
//  parseInt('1', 0) -> 1   radix 为 0,parseInt() 会根据十进制来解析,所以结果为 1;
//  parseInt('2', 1) -> radix 为 1,超出区间范围,所以结果为 NaN;
//  parseInt('3', 2) -> NaN radix 为 2,用2进制来解析,应以 0 和 1 开头,所以结果为 NaN。

// 因为parseInt接收两个参数,所以结果为 [1, NaN, NaN]

解释参见

跨域

可以参考
JSONP:通过动态创建 script,再请求一个带参网址实现跨域通信。document.domain

  • iframe 跨域:两个页面都通过 js 强制设置 document.domain 为基础主域,就实现了
    同域。
    location.hash + iframe 跨域:a 欲与 b 跨域相互通信,通过中间页 c 来实现。 三个
    页面,不同域之间利用 iframe 的 location.hash 传值,相同域之间直接 js 访问来通
    信。
    window.name + iframe 跨域:通过 iframe 的 src 属性由外域转向本地域,跨域数据即
    由 iframe 的 window.name 从外域传递到本地域。
    postMessage 跨域:可以跨域操作的 window 属性之一。
    CORS:服务端设置 Access-Control-Allow-Origin 即可,前端无须设置,若要带
    cookie 请求,前后端都需要设置。
    代理跨域:启一个代理服务器,实现数据的转发

语义化标签

在这里插入图片描述
常见的语义化标签

<header>      <!--:页眉通常包括网站标志、主导航、全站链接以及搜索框。-->
<nav>           <!--:标记导航,仅对文档中重要的链接群使用。-->
<main>         <!--:页面主要内容,一个页面只能使用一次。-->
<article>       <!--:定义外部的内容,其中的内容独立于文档的其余部分。-->
<section>     <!--:定义文档中的节。比如章节、页眉、页脚或文档中的其他部分。-->
<aside>        <!--:定义其所处内容之外的内容。如侧栏、文章链接、广告、相关产品列表等。-->
<footer>        <!--:页脚,只有当父级是body时,才是整个页面的页脚。--> 

<title>           <!--:页面主体内容。-->
<hn>             <!--:h1~h6,分级标题,<h1> 与 <title> 协调有利于搜索引擎优化。-->
<ul>              <!--:无序列表。-->
<li>               <!--:有序列表。-->
<small>         <!--:呈现小号字体效果,指定细则,输入免责声明、注解、署名、版权。-->
<strong>       <!--:和 em 标签一样,用于强调文本,但它强调的程度更强一些。-->
<em>            <!--:将其中的文本表示为强调的内容,表现为斜体。-->
<mark>         <!--:使用黄色突出显示部分文本。-->
<figure>        <!--:规定独立的流内容(图像、图表、代码等等)(默认有40px左右margin)。-->
<cite>           <!--:表示所包含的文本对某个参考文献的引用,比如书籍或者杂志的标题。-->
<blockquoto> <!--:定义块引用,块引用拥有它们自己的空间。-->
<q>                <!--:短的引述(跨浏览器问题,尽量避免使用)。-->
<time>           <!--:datetime属性遵循特定格式,文本必须是合法的时间格式。-->
<abbr>          <!--:简称或缩写。-->
<dfn>             <!--:定义术语元素,与定义必须紧挨着,可以在描述列表dl元素中使用。-->
<address>     <!--:作者、或组织的联系信息(电子邮件地址、指向联系信息页的链接)。-->
<del>             <!--:移除的内容。-->
<ins>             <!--:添加的内容。-->
<code>         <!--:标记代码。-->
<meter>        <!--:定义已知范围或分数值内的标量测量。(IE 不支持 meter 标签)-->
<progress>   <!--:定义运行中的进度(进程)。-->

总结语义化优点:

  1. 易于用户阅读,样式丢失的时候能让页面呈现清晰的结构。
  2. 有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重。
  3. 方便其他设备解析,如盲人阅读器根据语义渲染网页
  4. 有利于开发和维护,语义化更具可读性,代码更好维护,与CSS3关系更和谐

块级元素和行内元素

行内元素有:a b span I em img input select strong
块级元素有:div ul ol li dl dt dd h1 h2 h3 h4 p

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值