JS 自测题

简介: JS 自测题

引用类型

答案

{
  x:1,
  y:2
}

window.onload 和 DOMcontentLoaded 的区别

下方代码的打印顺序是?

答案

解析

window.addEventListener("load", function () {
  // 页面的全部资源加载完才会执行,包括图片视频等
});
document.addEventListener("DOMContentLoaded", function () {
  // DOM 渲染完即可执行,此时图片、视频可能还没有加载完
});

创建 10 个<a>标签,点击的时候弹出来对应的序号

let a
for (let i = 0; i < 10; i++) {
    a = document.createElement('a')
    a.innerHTML = i + '<br>'
    a.addEventListener('click', function (e) {
        e.preventDefault()
        alert(i)
    })
    document.body.appendChild(a)
}


  • 原理:for 循环中定义 i 是块级作用域,10次循环形成10个块级作用域,点击时获取的 i 值即其序号。

若按以下写法(在 for 循环外定义 i),会弹出几?

答案:10

  • 解析:在 for 循环外定义 i,则 i 在 for 循环内是自由变量,点击事件触发时,访问的都是 for 循环外的 i 变量,此时 for 循环早已结束,i 值为 10

自由变量

当前作用域没有定义的变量 即自由变量

自由变量的查找,是 在函数定义的地方,向上级作用域查找

不是在执行的地方!

自测题1:下方代码会打印多少?

函数作为返回值

答案 100

自测题2:下方代码会打印多少?

答案 100

自测题3:下方代码运行效果?

答案

100
10
10

setTimeout 测试

自测题1:下方代码会打印多少?

console.log(1);

setTimeout(function () {
  console.log(2);
}, 1000);

console.log(3);

setTimeout(function () {
  console.log(4);
}, 0);

console.log(5);

答案:

1 
3
5
4
2

自测题2:下方代码会打印多少?

let i;
for (i = 1; i <= 3; i++) {
  setTimeout(function () {
    console.log(i);
  }, 0);
}

答案

4
4
4

手写 Promise 加载一张图片

function loadImg(src) {
    return new Promise(
        (resolve, reject) => {
            const img = document.createElement('img')
            img.onload = () => {
                resolve(img)
            }
            img.onerror = () => {
                const err = new Error(`图片加载失败 ${src}`)
                reject(err)
            }
            img.src = src
        }
    )
}

使用范例

const url1 = '图片1的地址'
const url2 = '图片2的地址'

loadImg(url1).then(img1 => {
    console.log(img1.width)
    return loadImg(url2) 
}).then(img2 => {
    console.log(img2.width)
}).catch(err => console.error(err))


目录
相关文章
|
9月前
|
人工智能 数据可视化 搜索推荐
免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!
本地部署AI模型(如DeepSeek R1)保障数据隐私、节省成本且易于控制,通过Ollama平台便捷安装与运行,结合可视化工具(如Chatbox)及Python代码调用,实现高效、个性化的AI应用开发与使用。
587 3
免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!
|
Web App开发 存储 JavaScript
Chrome插件实现问题之Manifest V2切换MV3会带来什么问题,如何解决
Chrome插件实现问题之Manifest V2切换MV3会带来什么问题,如何解决
|
存储 安全 Java
Java内省(Introspector)机制:深入理解与应用
Java内省(Introspector)机制:深入理解与应用
|
大数据 API Android开发
Android MemoryFile 共享内存
Android MemoryFile 共享内存
286 0
|
安全 关系型数据库 分布式数据库
【PolarDB 开源】PolarDB 在金融行业中的实践:高可用与安全合规解决方案
【5月更文挑战第28天】PolarDB,一款适用于金融行业的强大数据库,以其高可用性和安全合规性脱颖而出。通过多副本机制和自动故障转移确保业务连续性,结合严格的访问控制和数据加密技术保护信息安全。在实际应用中,如银行核心系统,PolarDB 负责处理海量交易数据,同时支持主从架构以备故障切换。此外,设置强密码策略和加密存储确保合规性,并通过监控预警及时解决问题。随着金融科技发展,PolarDB 将在云原生架构和人工智能等领域发挥更大作用,助力金融行业创新与进步。
452 0
|
人工智能 自然语言处理 API
如何使用ModelScope-Agent快速搭建一个火爆全网的哄哄模拟器
前不久,一个爆火的基于大语言模型的应用“哄哄模拟器”在QQ群爆火了,通过文字聊天的方式,模拟在各种吵架场景中如果哄好女友,女友是由AI扮演,包含了数值系统和虚拟伴侣的文本对话能力。
|
算法 5G
基于WOA鲸鱼优化的5G通信系统资源分配优化matlab仿真
基于WOA鲸鱼优化的5G通信系统资源分配优化matlab仿真
373 0
基于WOA鲸鱼优化的5G通信系统资源分配优化matlab仿真
|
SQL 分布式计算 数据挖掘
使用基于Web的交互式开发工具Zeppelin
使用基于Web的交互式开发工具Zeppelin
|
XML 定位技术 Android开发
Android 12 小部件详解
Android 12 小部件详解
1247 0
Android 12 小部件详解
|
Java 物联网 Maven
MQTT协议
mqtt介绍及应用
1231 0
MQTT协议