专项练习21

目录

一、选择题

    1、下列逻辑表达式的结果为false的是()

    2、请问以下JS代码输出的结果是什么?

    3、以下哪些对象是Javascript内置的可迭代对象?

二、编程题

    1、找到数组参数中的最大值并返回。注意:数组中只包含数字


一、选择题

1、下列逻辑表达式的结果为false的是()

A、NaN == NaN

B、null == undefined

C、'' == 0

D、true == 1

正确答案:A

解析:

(1)选项解释

A选项:NaN 无论与谁比较,包括它自己,结果都是 false。判断两个NaN相等要用Object.is(NaN,NaN)

B选项:null 与 undefined 比较,结果为 true,除此之外undefined 和 null 与谁比较,结果都为 false

C选项:String 与 Number 比较,String Number 类型,再比较,转为 Number 类型的字符串结果为0==0,结果为 true

D选项:Boolean 与其他类型比较,Boolean 先转Number 类型,true 转为 Number 类型的值为 1,故 true==1 的结果为 true

(2)实例

Object.is('foo', 'foo');     // true
Object.is(window, window);   // true

Object.is('foo', 'bar');     // false
Object.is([], []);           // false

var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo);         // true
Object.is(foo, bar);         // false

Object.is(null, null);       // true

// 特例
Object.is(0, -0);            // false
Object.is(0, +0);            // true
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true

2、请问以下JS代码输出的结果是什么?
let obj = {
  num1: 117
}
let res = obj;
obj.child = obj = { num2: 935 };
var x = y = res.child.num2;
console.log(obj.child);
console.log(res.num1);
console.log(y);

A、117、117、undefined

B、117、117、935

C、undefined、117、935

D、undefined、117、undefined

正确答案:C        你的答案:B

解析:

(1)let obj = { num1: 117 }  

把obj放在栈里,把 { num1:117} 放在堆里,让obj指向堆里的 { num1:117 }

(2)let res = obj;

把res放在栈里,把res也指向堆里的 { num1:117 }

(3) obj.child  =  obj  =  { num2: 935 }; 

①重点:赋值操作先定义变量(从左到右),进行赋值从右到左

②定义变量:obj.child,给堆里的 { num1:117 } 加一个child属性,得 {num1:117,child:undefined}

③定义变量:obj,之前在栈里的obj

定义变量

④赋值:obj = { num2: 935 },把 { num2: 935 } 放在堆里,把栈里的obj指向堆里的 { num2: 935 } 

obj赋新的值

⑤赋值:obj.child = obj,把堆里的 {num1:117,child:undefined} 的child指向  {num2: 935}

obj.child赋到新值里

⑥总结

obj = { num2: 935 } 

res = { num1: 117,child:{ num2: 935 }  }

(4)var x = y = res.child.num2;

同第(3)步的①原理,最后赋值从右到左,y = res.child.num2 即 y = 935,x = y 即 x = 935


3、以下哪些对象是Javascript内置的可迭代对象?

A、Array

B、Map

C、String

D、Object

正确答案:ABC        你的答案:ABCD

解析:

(1)String、Array、TypedArray、Map 和 Set 都是内置可迭代对象,因为它们的原型对象都拥有一个 Symbol.iterator 方法

(2)MDN参考文档

迭代器和生成器 - JavaScript | MDN


二、编程题

1、找到数组参数中的最大值并返回。注意:数组中只包含数字

解析:

(1)Math.max() 方法求最大,注意方法不能接受数组作为参数,需要解构赋值将数组解构

<script>
    let array = [23,65,12,5,34]
    function _max(array){
        return Math.max(...array)
    }
    console.log(_max(array));
</script>

(2)for() 依次循环数组值,找到最大值

<script>
    let array = [23,65,12,5,34]
    function _max(array){
        let max = array[0]
        for(let i =0;i<array.length;i++){
            if(max<array[i]){
                max = array[i]
            }
        }
        return max
    }
    console.log(_max(array));
</script>

(3)sort() 方法对新数组从大到小排序,shift() 返回新数组排序第一个值

<script>
    let array = [23,65,12,5,34]
    function _max(array){
        const newArr = array
        newArr.sort((a,b)=>{
            return b-a
        })
        return newArr.shift()
    }
    console.log(_max(array));
</script>

(4)sort() 方法对新数组排序从小到大,pop() 返回新数组排序最后一个值

<script>
    let array = [23,65,12,5,34]
    function _max(array){
        const newArr = array
        newArr.sort((a,b)=>{
            return a-b
        })
        return newArr.pop()
    }
    console.log(_max(array));
</script>

(5)reduce() 方法遍历数组元素,并返回max值

<script>
    let array = [23,65,12,5,34]
    function _max(array){
        let max = array.reduce((max,cur)=>{
            return max>cur?max:cur
        })
        return max
    }
    console.log(_max(array));
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV读取一张8位无符号四通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

GreenPlum分布式集群部署实战

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Django实现简单的音乐播放器 3

在原有音乐播放器上请求方式优化和增加加载本地音乐功能。 效果&#xff1a; 目录 播放列表优化 设置csrf_token 前端改为post请求 视图端增加post验证 加载歌曲 视图 设置路由 模板 加载layui css 加载layui js 增加功能列表 功能列表脚本实现 最终效果 总结 播…

Vue 如何简单快速组件化

文章目录 前言相关文章组件化实战如何引入组件什么是父组件&#xff0c;什么是子组件如何实现给子组件赋值完整代码 如何调用子组件方法完整代码 总结 前言 为了简化拆分复杂的代码逻辑&#xff0c;和实现代码的组件化&#xff0c;封闭化。我们需要使用组件化的方法。我这里只…

SDN-OpenDaylight与Mininet的原理、安装、使用

一、前言 本文将介绍OpenDaylight与Mininet的原理并介绍他们的安装及简单的使用&#xff0c;本实验的环境为Liunx Ubuntu 16.04&#xff0c;已成功安装OVS&#xff0c;但没有安装Mininet。 二、原理 &#xff08;一&#xff09;OpenDaylight OpenDaylight是一个软件定义网络&…

天猫数据分析工具(天猫实时数据)

后疫情时代&#xff0c;聚会、聚餐与送礼热度上涨&#xff0c;酒类产品既作为送礼首选又作为佐餐饮品的热门选手也受此影响迎来消费小高峰。在此背景下&#xff0c;白酒市场也开始复苏并不断加快速度。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年1月份至4月…

C# 简述.NET中堆和栈的区别

目录 一&#xff0c;引言 二&#xff0c;.NET的堆栈 三&#xff0c;.NET中的托管堆 四&#xff0c;.NET中的非托管堆 五、堆栈、托管堆和非托管堆的比较 六&#xff0c;总结 一&#xff0c;引言 .NET提供了垃圾回收机制&#xff0c;使程序员从内存管理中被解放出来。但这…

4.2 x64dbg 针对PE文件的扫描

通过运用LyScript插件并配合pefile模块&#xff0c;即可实现对特定PE文件的扫描功能&#xff0c;例如载入PE程序到内存&#xff0c;验证PE启用的保护方式&#xff0c;计算PE节区内存特征&#xff0c;文件FOA与内存VA转换等功能的实现&#xff0c;首先简单介绍一下pefile模块。 …

【Web3】Web3连接到以太坊网络(测试网、主网)

目录 什么是Web3 Web3项目连接以太坊网络 1.下载Web3 2.实例化Web3对象 3.infura 获取连接以太坊网络节点 4.添加网络节点 什么是Web3 web3.js开发文档&#xff1a;web3.js - Ethereum JavaScript API — web3.js 1.0.0 documentation web3.js 中文文档 : web3.js - 以…

Mysql 幻读,当前读和快照读

什么是幻读 幻读指当用户读取某一范围的数据行时&#xff0c;另一个事务又在该范围内插入了新行&#xff0c;当用户在读取该范围的数据行时&#xff0c;会发现有新增行数据&#xff1b; mysql 在RR(可重复读)隔离级别利用间隙锁机制下一定程度上解决了幻读。 这里的一定程度…

Android Studio实现内容丰富的安卓美食管理发布平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号079 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

更改VS code Jupyter 插件的默认快捷键

更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键 替换Jupyter默认快捷键 更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键打开keyboard shortcuts 设置方法一方法二 更换快捷键 end Jupyter 插件很好的在VS code中集成了…

异地远程访问本地SQL Server数据库【无公网IP内网穿透】

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云文章&#xff1a;无需公网IP…

Golang的trace性能分析

文章目录 一、trace概述二、trace的使用方式代码中trace采集通过pprof采集 三、trace分析细节trace的web界面trace中需要关注的关注GC的频率关注goroutine调度情况关注goroutine的数量理想情况 四、GC分析当前服务GC情况设置GOGC设置GOMEMLIMITGC阈值的讨论GC的特点 五、gorout…

前端学习——jsDay5

对象 对象使用 小练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

Spring Boot中的请求参数绑定及使用

Spring Boot中的请求参数绑定及使用 在Web应用程序中&#xff0c;请求参数绑定是非常重要的操作。Spring Boot框架使得请求参数绑定变得非常简单&#xff0c;通过使用注解和预定义的类可以轻松地实现此操作。本文将介绍Spring Boot中的请求参数绑定及其使用。 请求参数绑定 在…

银河麒麟服务器v10 sp1 部署 Net6.0 项目

上一篇已经部署了Net6.0环境&#xff0c;本节将实现Net6.0程序部署&#xff0c;打开或新建项目&#xff0c;修改appsettings.json配置&#xff1a; 添加&#xff1a;"urls": "http://*:8061",//linux部署使用&#xff0c;端口可根据需求修改为自己的 在项…

关于数据库SQL优化

简介 在项目上线初期&#xff0c;业务数据量相对较少&#xff0c;SQL的执行效率对程序运行效率的影响可能不太明显&#xff0c;因此开发和运维人员可能无法判断SQL对程序的运行效率有多大。但随着时间的积累&#xff0c;业务数据量的增多&#xff0c;SQL的执行效率对程序的运行…

简要介绍 | 基于深度学习的姿态估计技术

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对基于深度学习的姿态估计技术进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 注2&#xff1a;"简要介绍"系列的所有创作均使用了AIGC工具辅助 基于深度学习的姿态估计技术 背景介绍 …

前端 | windows安装nvm管理node.js

文章目录 01 nvm介绍02 安装03 设置镜像04 安装与版本管理05 基础使用 01 nvm介绍 nvm&#xff0c;即node version manager&#xff0c;是一个方便切换和管理node.js版本的工具。 安装nvm前的注意事项&#xff1a; 卸载掉现有的node.js所有安装目录避免出现空格和中文选用管理…