首页 > 其他分享 >JS习题解析

JS习题解析

时间:2023-08-20 14:34:40浏览次数:33  
标签:arr NaN JS disabled item button1 let 习题 解析

1、页面有一个id为 button1的按钮,如何通过原生的js禁用?(IE 考虑IE 8.0以上版本)

A、document.getElementById("button1").readonly= true;

B、document.getElementById("button1").setAttribute('readonly','true');

C、document.getElementById("button1").disabled = true;

D、document.getElementById("button1").setAttribute('disabled','true');

正确答案:CD        你的答案:D

解析:

(1)原生的 js 禁用

<body>

   <button id="button1">点击</button>

   <script>

       // var button1 = document.getElementById("button1").disabled = true;

       var button1 = document.getElementById("button1").setAttribute('disabled','true');

   </script>

</body>

(2)jquery 禁用及恢复禁用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 注意引入jq -->
    <script src="../jquery-3.6.0.js"></script>
</head>
<body>
    <button id="button1">点击</button>
    <script>
        // 通过attr()方法禁用
        $('#button1').attr({'disabled':'disabled'})
        // removeAttr()方法把disabled属性删除
        $('#button1').removeAttr('disabled')
    </script>
</body>
</html>

2、如下代码输出的结果是什么:

console.log(1+ "2"+"2");

console.log(1+ +"2"+"2");

console.log("A"- "B"+"2");

console.log("A"- "B"+2);

A、122 122 NaN NaN

B、122 32 NaN NaN2

C、122 32 NaN2 NaN

D、122 32 NaN2 NaN2

正确答案:C

解析:

(1)选项

A选项:做加法时要注意双引号,字符串与 number 相加,会先把 number 转为字符串,然后字符串合并,这里相当于字符串的合并,即为122

B选项:第一个 +"2" 中的加号是一元加操作符,+"2" 会变成数值 2,因此 1+ +"2" 相当于 1+2=3,然后和后面的字符串 “2” 相合并,变成了字符串 "32"

C选项:"A"-"B" 的运算中,需要先把 "A" 和 "B" 用 Number 函数转换为数值,其结果为 NaN,在减法操作中,如果有一个是 NaN,则结果是 NaN,因此 "A"-"B" 结果为 NaN,然后和 "2" 进行字符串合并,变成了 NaN2

D选项:根据上题所述,"A"-"B" 结果为 NaN,然后和数值2进行加法操作,在加法操作中,如果有一个操作数是NaN,则结果为NaN

3、问:控制台打印的结果是?

for(let i=0;i<2;i++){
    setTimeout(function(){
    console.log(i)
    },100);
}
for(var i=0;i<2;i++){
    setTimeout(function(){
        console.log(i)
    },100);
}

A、0 1 2 2

B、0 1 0 1

C、0 1 1 1

D、1 1 0 0

正确答案:A

解析:

(1)性质

① js 是单线程的,Settimeout 是异步宏任务,所以代码执行遇到异步的,就放在事件队列中的,等线程中的任务执行完后才会执行事件队列中的任务

② let 是 es6 中声明变量的方式,有自己的作用域块,可以放变量,所以 let 绑定 for 循环时,每个i 都有自己的值,在这个for循环中就是满足一次条件向事件队列中添加一个打印 i 的事件,且每个事件中的 i 有自己的值

③ var 没有作用域块,for 循环的变量就会后一个覆盖前一个,当循环完毕时 i 就只有一个值,又因为 for 循环的判断条件是不满足跳出,所以 i 最后是 2 而不是 1

(2)结果

①第一个 let 存在变量提升,但不存在初始化,因此生成暂时性死区,不存在闭包,所以两次执行结果为0,1

② 第二个形成了闭包,for 循环执行后 i 为2,当定时器回调函数执行是 i 就为 2

二、编程题

1、移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果数组返回

示例:输入 [1, 2, 2, 3, 4, 2, 2], 2        输出 [1, 3, 4]

解析:

(1)removeWithoutCopy()方法递归移除数组中对应的元素


<script>
    let arr = [1, 2, 2, 3, 4, 2, 2]
    let item = 2
    function removeWithoutCopy(arr, item) {
        i = arr.indexOf(item)
        if(i === -1)return arr
        arr.splice(i,1)
        return removeWithoutCopy(arr,item)
    }
    console.log(removeWithoutCopy(arr, item));
</script>

(2)splice()方法数组去除及indexOf()搜索数组相同元素下标


<script>
    let arr = [1, 2, 2, 3, 4, 2, 2]
    let item = 2
    function removeWithoutCopy(arr, item) {
        while(arr.indexOf(item) !== -1){
            arr.splice(arr.indexOf(item),1)
        }
        return arr
    }
    console.log(removeWithoutCopy(arr, item));
</script>

标签:arr,NaN,JS,disabled,item,button1,let,习题,解析
From: https://blog.51cto.com/u_16038899/7161430

相关文章

  • Threejs搭建web3D场景
    今天发现之前都没有写一个关于搭建web端3D场景的介绍,这节补上:​了解ThreeJs之前先了解WebGL:(如果你已经了解了threeJs可以跳过这一章)WebGL(全写WebGraphicsLibrary)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGLES2.0结合在一起,通过增加OpenGLES2.0的一个JavaS......
  • 【深度学习 | CNN】“深入解析卷积神经网络与反卷积:从生活案例到原理的全面指南” (从
    ......
  • Node.js:实现遍历文件夹下所有文件
    Node.js:实现遍历文件夹代码如下constfs=require('fs')constpath=require('path')functiontraverseFolder(folderPath){//读取文件夹列表constfiles=fs.readdirSync(folderPath)//遍历文件夹列表files.forEach(function(fileName){//拼接当......
  • 3.你所不知道的go语言控制语句——Leetcode习题69
    目录本篇前瞻Leetcode习题9题目描述代码编写控制结构顺序结构(Sequence)声明和赋值多返回值赋值运算符算术运算符位运算符逻辑运算分支结构if语句switch语句逻辑表达式fallthrough类型推断循环语句continuebreakgotoLeetcode习题69题目描述题目分析代码编写本篇小结下篇预告本篇......
  • JS判断是否是IOS或Android环境
    //通过判断浏览器的userAgentconstuserAgent=navigator.userAgent;constisiOS=!!userAgent.match(/\(i[^;]+;(U;)?CPU.+MacOSX/);constisAndroid=userAgent.indexOf('Android')>-1||userAgent.indexOf('Adr')>-1;//alert('是......
  • Python学习:迭代器与生成器的深入解析
    函数在Python中扮演着重要角色,不仅可以封装代码逻辑,还能通过迭代器和生成器这两种强大的技术,实现更高效的数据处理和遍历。本篇博客将深入探讨Python函数的迭代器和生成器,结合实际案例为你揭示它们的神奇,以及如何巧妙地应用迭代器和生成器来解决实际问题。迭代器:数据的遍历之道迭代......
  • [cuda]RMSNorm核函数解析
    计算原理\(RMSNorm=x*(sqrt(1/n*(x_i)^2+eps))*g\)torch实现classRMSNorm(torch.nn.Module):def__init__(self,dim:int,eps:float=1e-6):super().__init__()self.eps=epsself.weight=nn.Parameter(torch.ones(dim))......
  • JS入门第三节
    <ulclass="nav"><li>我的首页</li><li>产品介绍</li><li>联系方式</li></ul><script>constresult=document.querySelectorAll('li');......
  • 使用插件-v_jstools补环境
    功能:生成临时环境/注入代码/hook/解混淆下载:https://github.com/cilame/v_jstools下载如图: 安装如图:chrome://extensions/  功能用途一:生成临时环境1.先点击打开如下两个开关,然后打开配置页面 2.如下插件配置详情,勾选上总开关,DOM开关,以及常用的挂钩,然后关掉......
  • 深入解析 Redis 持久化机制
    引言我们都知道,Redis的数据存储在内存中,一旦服务器宕机,内存中的数据将全部丢失。因此,对Redis来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的。本篇我们详细讲解下Redis的三种持久化机制,分别是 AOF(AppendOnlyFile) 日志和 RDB快照 以及 混合持久化。......