目录
一、选择题
1、假设HTML有一个按钮id为btn,经过以下操作最终会变成什么颜色?
2、下列表达式中,结果为NaN的是()
3、你想通过 XMLHttpRequest更新以下元素,即使用div显示状态,下面哪段代码是正确的?
二、编程题
1、以boolean的形式返回字符串首参中是否包含第二个参数
一、选择题
1、假设HTML有一个按钮id为btn,经过以下操作最终会变成什么颜色?
document.getElementById('btn').style = 'background: blue';
document.getElementById('btn').style = 'background: red';
Promise.resolve().then(() => {
document.getElementById('btn').style = 'background: black';
})
A、由blue变成red再变成black
B、颜色不会发生改变
C、red
D、black
正确答案:D 你的答案:C
解析:
(1)首先明确 UI 渲染是宏任务,而按照事件循环的模型,先执行的是整体的主干代码,这期间style 频繁变化但是还没有被渲染所以不会有颜色的变化,同时因为有个微任务也就是 promise 回调函数,最终改变了 style 为 black,之后才执行的 UI 渲染,也就是最后的颜色
(2)JS会阻塞DOM渲染,推荐文章
原来 CSS 与 JS 是这样阻塞 DOM 解析和渲染的 - 掘金
2、下列表达式中,结果为NaN的是()
A、123 + null
B、123 / 0
C、123 + '1';
D、123 + undefined;
正确答案:D 你的答案:B
解析:
(1)选项
A选项:对于“+”运算,如果一端为Number类型,另一端为原始数据类型,则另一端会被转为Number类型,再相加,null会被转为0,结果为123
B选项:123/0结果为Infinity
C选项:对于“+”运算,如果一端为字符串,则另一端会被转为字符串进行字符串之间的连接,因此结果为1231
D选项:对于“+”运算,undefined会被转为NaN,结果也为NaN
<script>console.log(123 + null);//123console.log(123 / 0);//Infinityconsole.log(123 + '1');//1231console.log(123 + undefined);//NaN
</script>
(2)JavaScript 中,允许 0 作为除数,只有 0/0 结果是 NaN,其他数值 /0 结果都是 Infinity
<script>console.log(0/0);//NaNconsole.log(1/0);//Infinityconsole.log('1'/0);//Infinityconsole.log('a'/0);//NaN
</script>
3、你想通过 XMLHttpRequest更新以下元素,即使用div显示状态,下面哪段代码是正确的?
<div id="statusCode"></div>
A、var myDiv = document.getElementById ("statusCode"); myDiv.innerHTML = req.statusCode;
B、var myDiv = document.getElementById ("statusCode"); myDiv.innerHTML = req.status;
C、var myDiv = document.getElementById ("statusCode"); myDiv.setStatus (req.statusCode);
D、var myDiv = document.getElementById ("statusCode"); myDiv.status = req.status;
正确答案:B
解析:
(1)status与statusText
status属性返回状态码,为一个数字
statusText属性返回状态码以及描述,字符串
(2)XMLHttpRequest对象的readyState与status的几种状态码表示的意思:
①readyState有五种状态:
- 0 (未初始化): (XMLHttpRequest)对象已经创建,但还没有调用open()方法;
- 1 (载入):已经调用open() 方法,但尚未发送请求;
- 2 (载入完成): 请求已经发送完成;
- 3 (交互):可以接收到部分响应数据;
- 4 (完成):已经接收到了全部数据,并且连接已经关闭。
②status实际是一种辅状态判断,只是status更多是服务器方的状态判断,常用状态如下:
- 1xx——信息类,表示收到Web浏览器请求,正在进一步的处理中。如,100:客户必须继续发出请求;101:客户要求服务器根据请求转换HTTP协议版本
- 2xx——成功,表示用户请求被正确接收,理解和处理。例如,200:OK;201:提示知道新文件的URL
- 3xx——重定向,表示请求没有成功,客户必须采取进一步的动作。如,300:请求的资源可在多处得到;301:删除请求数据
- 4xx——客户端错误,表示客户端提交的请求有错误。如,404:NOT Found,意味着请求中所引用的文档不存在。
- 5xx——服务器错误,表示服务器不能完成对请求的处理。如,500,服务器产生内部错误
二、编程题
1、以boolean的形式返回字符串首参中是否包含第二个参数
解析:
(1)search()方法
<script>let string = '24516'let value = 3function _search(string, value) {return string.search(value) === -1 ? false : true}console.log(_search(string, value));
</script>
(2)indexOf()方法
<script>let string = '24516'let value = 3function _search(string, value) {return string.indexOf(value) === -1 ? false : true}console.log(_search(string, value));
</script>
(3)for()循环
<script>let string = '24516'let value = 3function _search(string, value) {let arr = [...string]for(let i of arr){if(i == value){return true}}return false}console.log(_search(string, value));
</script>