JavaScript常见面试题(一)

文章目录

  • 1. JavaScript有哪些数据类型,它们的区别?
  • 2.数据类型检测的方式有哪些
  • 3. 判断数组的方式有哪些
  • 4.null和undefined区别
  • 5.typeof null 的结果是什么,为什么?
  • 6.intanceof 操作符的实现原理及实现
  • 7.为什么0.1+0.2 ! == 0.3,如何让其相等
  • 8.isNaN 和 Number.isNaN 函数的区别?
  • 9.==操作符的强制类型转换规则
  • 10.其他值到字符串的转换规则?
  • 11.其他值到数字值的转换规则?
  • 12.其他值到布尔类型的值的转换规则?
  • 13.Object.is() 与比较操作符 "===" “==” 的区别?
  • 14.JavaScript 中如何进行隐式类型转换?
  • 15.let、const、var的区别
  • 16.const对象的属性可以修改吗
  • 17.如果new一个箭头函数的会怎么样
  • 18.箭头函数与普通函数的区别
  • 19.箭头函数的this指向哪⾥?
  • 20.对 rest 参数的理解
  • 21.ES6中模板语法与字符串处理

1. JavaScript有哪些数据类型,它们的区别?

分为简单数据类型和引用数据类型

  • 简单数据类型有:Numer,String,Boolean,Null,Undefined。
  • 引用数据类型:对象,数组,函数。
  • ES6新增Symbol(独一无二且不可变的数据类型),BigInt(表示任意精度格式的整数)。
  • 简单数据类型存储在栈中,引用数据类型存储在堆中。

2.数据类型检测的方式有哪些

  • typeof console.log(typeof ‘str’);
  • instanceof(只能正确判断引用数据类型) console.log(2 instanceof Number);
  • constructor console.log((2).constructor === Number);
  • Object.prototype.toString.call()

3. 判断数组的方式有哪些

  • isArray(Array.isArray(arr) //true)
  • proto (arr.proto === Array.prototype //true)
  • constructor属性(arr.constructor === Array //true)
  • instanceof(arr instanceof Array //true)
  • toString(Object.prototype.toString.call(obj).slice(8, -1) === “Array” //true)
  • isPrototypeof(判断当前对象是否是另一个对象的原型) Array.prototype.isPrototypeOf(obj)

4.null和undefined区别

undefined 代表的含义是变量声明了未定义(未赋值),null 代表的含义是空对象。

  1. null转换为数值为0,undefined转化为数值为NAN。
  2. null通过typeof判断数据类型的输出结果为object,undefined为undefined。
  3. 访问不存在的dom节点,原型链上查找到顶端返回null,给函数传参没有传,访问对象中没有的属性返回undefined

5.typeof null 的结果是什么,为什么?

历史遗留问题,保留了下来。

6.intanceof 操作符的实现原理及实现

  1. 原理:获取对象的_proto__属性,然后沿着对象的原型链向上查找,看构造函数的prototype对象是否出现在对象的原型链上。

7.为什么0.1+0.2 ! == 0.3,如何让其相等

因为 JavaScript 使用 IEEE 754 双精度浮点数来表示数字,这种表示方式无法精确地存储某些十进制小数,从而导致精度问题。
使用 toFixed 或 toPrecision 将浮点数格式化为固定的小数位数,然后再进行比较。

8.isNaN 和 Number.isNaN 函数的区别?

  1. 函数 isNaN 接收参数后,会尝试将这个参数转换为数值,某些非数值的值可以直接转换成数值。任何不能转换为数值的值都会导致这个函数返回true。
    在这里插入图片描述

  2. 函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN。不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。
    在这里插入图片描述

9.==操作符的强制类型转换规则

  1. 如果两个操作数的类型相同(例如都是字符串、数字或布尔值),则直接进行比较。
  2. 如果一个操作数是对象,另一个不是,会尝试将对象转换为原始类型的值,然后再进行比较。
  3. 如果一个操作数是字符串,另一个是数字,则尝试将字符串转换成数字,然后进行比较。
  4. 如果一个操作数是布尔值,另一个是非布尔值,则将布尔值转换成数字(true 转换为 1,false 转换为 0),然后进行比较。
  5. 如果其中一个操作数是 null,另一个是 undefined,则它们相等。
  6. 如果其中一个操作数是 NaN,则返回 false,因为 NaN 不等于任何值,包括它本身。

10.其他值到字符串的转换规则?

  1. Null 和 Undefined 类型 ,null 转换为 “null”,undefined 转换为 “undefined”,
  2. Boolean 类型,true 转换为 “true”,false 转换为 “false”。
  3. Number 类型的值直接转换,不过那些极小和极大的数字会使用指数形式。

11.其他值到数字值的转换规则?

  1. Undefined 类型的值转换为 NaN。
  2. Null 类型的值转换为 0。
  3. Boolean 类型的值,true 转换为 1,false 转换为 0。
  4. String 类型的值转换如同使用 Number() 函数进行转换,如果包含非数字值则转换为 NaN,空字符串为 0。
  5. 对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。

12.其他值到布尔类型的值的转换规则?

以下这些是假值: • undefined • null • false • +0、-0 和 NaN • “”
假值的布尔强制类型转换结果为 false。从逻辑上说,假值列表以外的都应该是真值。

13.Object.is() 与比较操作符 "=" “” 的区别?

  • 使用双等号(==)进行相等判断时,如果两边的类型不一致,则会进行强制类型转化后再进行比较。
  • 使用三等号(===)进行相等判断时,如果两边的类型不一致时,不会做强制类型准换,直接返回 false。
  • 使用 Object.is 来进行相等判断时,一般情况下和三等号的判断相同,它处理了一些特殊的情况,比如 -0 和 +0 不再相等,两个 NaN 是相等的。

14.JavaScript 中如何进行隐式类型转换?

  • +操作符的两边有至少一个string类型变量时,两边的变量都会被隐式转换为字符串;其他情况下两边的变量都会被转换为数字。
  • ==操作符两边的值都尽量转成number
  • <和>比较符,如果两边都是字符串,则比较字母表顺序,其他情况下,转换为数字再比较。

15.let、const、var的区别

  • 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。
  • var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。
  • var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。
  • var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。const和let不允许重复声明变量。
  • 在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。
    在这里插入图片描述

16.const对象的属性可以修改吗

  • const是用来定义常量的,而且定义的时候必须初始化,且定义后不可以修改。
  • const保证的并不是变量的值不能改动,而是变量指向的那个内存地址不能改动。对于基本类型的数据(数值、字符串、布尔值),其值就保存在变量指向的那个内存地址,对于引用类型的数据(主要是对象和数组)来说,变量指向数据的内存地址,保存的只是一个指针,const只能保证这个指针是固定不变的,至于它指向的数据结构是不是可变的,就完全不能控制了。

17.如果new一个箭头函数的会怎么样

箭头函数是ES6中的提出来的,它没有prototype,也没有自己的this指向,更不可以使用arguments参数,所以不能New一个箭头函数。

18.箭头函数与普通函数的区别

  1. 箭头函数比普通函数更加简洁(如果没有参数,就直接写一个空括号即可,如果只有一个参数,可以省去参数的括号,如果函数体的返回值只有一句,可以省略大括号)
  2. 箭头函数没有自己的this,它只会在自己作用域的上一层继承this
  3. 箭头函数继承来的this指向永远不会改变
  4. call()、apply()、bind()等方法不能改变箭头函数中this的指向
  5. 箭头函数不能作为构造函数使用(不能New)
  6. 箭头函数没有自己的arguments
  7. 箭头函数没有prototype(__proto__是当前对象的原型对象(隐式原型),而prototype是当前构造函数的原型对象(显式原型))

19.箭头函数的this指向哪⾥?

箭头函数不同于传统函数,它其实没有属于⾃⼰的 this,
它所谓的 this 是, 捕获其外层 上下⽂的 this 值作为⾃⼰的 this 值。

20.对 rest 参数的理解

rest参数是一种在函数定义中使用的特殊语法,它允许函数接受任意数量的参数,并将它们收集到一个数组中。

  • 在函数定义中,可以使用…语法来声明rest参数。
  • 通过使用rest参数,我们可以编写更灵活的函数,能够处理不确定数量的参数。

21.ES6中模板语法与字符串处理

  • ES6中的模板语法是一种更方便的字符串处理方式,它允许我们在字符串中插入变量,并且可以跨行书写。通过使用模板语法,我们可以更简洁地拼接字符串并提高代码的可读性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fluent固体运动的设置方法(1)

1 概述 固体运动是某些CFD问题中必须要考虑的因素&#xff0c;如风扇的旋转。相关问题可分类如下&#xff1a; 问题类型是否为刚体运动规律是否已知无特定称呼YY六自由度运动问题YN流固耦合问题NN 在 Fluent 中&#xff0c;有多种方法表征固体运动&#xff0c;包括&#xff1…

【医学图像处理】从ADNI中下载样本的MMSE数据

MMSE是什么&#xff1f; 简易精神状态检查&#xff08;MMSE&#xff0c;Mini-Mental State Examination&#xff09;是一种广泛使用的认知功能评估工具。它通常用于临床和研究环境中筛查痴呆症及评估其严重程度。MMSE通过考察患者的多种认知功能来进行评估&#xff0c;包括算术…

深度学习(八)——神经网络:卷积层

一、卷积层Convolution Layers函数简介 官网网址&#xff1a;torch.nn.functional — PyTorch 2.0 documentation 由于是图像处理&#xff0c;所以主要介绍Conv2d。 class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, b…

C++初学者指南第一步---3.输入和输出(基础)

C初学者指南第一步—3.输入和输出&#xff08;基础&#xff09; 1. I/O Streams(I/O流) #include <iostream>int main () {int i;// read value into istd::cin >> i; // print value of istd::cout << i << \n; }数据的来源和目标 …

解决MyBatis获取刚插入数据的ID值

解决MyBatis获取刚插入数据的ID值 Mybatis获取刚插入数据的ID值有很多解决方法&#xff0c;目前采用以下方式进行获取。 添加完数据后直接返回刚添加数据的id // UserDao.java public static void addUser() throws Exception{InputStream resourceAsStream Resources.getR…

绝了!篇篇10万+的AI治愈系插画,完整版项目拆解(附提示词)!

大家好&#xff0c;我是向阳 最近&#xff0c;治愈系插画在小某薯上热度很高&#xff0c;比如这个号&#xff0c;每一篇的笔记数据都不错&#xff0c;2个月时间涨粉7.3万。 然后&#xff0c;我偶然发现&#xff0c;有人把这样的治愈插画用到公某号爆文的配图上&#xff0c;每一…

Passper for ZIP 安装教程 (ZIP密码恢复软件)

前言 Passper for ZIP是一款功能强大且实用的ZIP密码恢复软件。当你忘记了压缩包的密码时&#xff0c;这个工具可以轻松解决这个问题。只需按照界面上的提示操作&#xff0c;选择文件&#xff0c;然后选择解码的方式&#xff0c;即可轻松等待恢复完成。该软件支持四种密码恢复…

软考初级网络管理员__Web网站的建立、管理维护以及网页制作单选题

1.在HTML 中&#xff0c;用于输出“>”符号应使用()。 gt \gt > %gt 2.浏览器本质上是一个&#xff08;&#xff09;。 连入Internet的TCP/IP程序 连入Internet的SNMP程序 浏览Web页面的服务器程序 浏览Web页面的客户程序 3.HTML 语言中&#xff0c;单选按钮的…

ollama 多模态llava图像识别理解模型使用

参考: https://llava-vl.github.io/ https://ollama.com/blog/vision-models https://blog.csdn.net/weixin_42357472/article/details/137666022 下载: ollama run llava:13bcli使用 图片地址前面空格就行 describe this image: /ai/a1.jpg

笔记本电脑安装属于自己的Llama 3 8B大模型和对话客户端

选择 Llama 3 模型版本&#xff08;8B&#xff0c;80 亿参数&#xff09; 特别注意&#xff1a; Meta 虽然开源了 Llama 3 大模型&#xff0c;但是每个版本都有 Meta 的许可协议&#xff0c;建议大家在接受使用这些模型所需的条款之前仔细阅读。 Llama 3 模型版本有几个&…

在矩池云使用GLM-4的详细指南(无感连GitHubHuggingFace)

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本&#xff0c;在多项测试中表现出超越已有同等规模开源模型的性能&#xff0c;它能兼顾多轮对话、网页浏览、代码执行、多语言、长文本推理等多种功能&#xff0c;性能更加强大。其多模态语言模型GLM-4V-9B在…

socket收发数据的处理

1. TCP 协议是一种基于数据流的协议 Socket的Receive方法只是把接收缓冲区的数据提取出来,当系统的接收缓冲区为空,Receive方法会被阻塞,直到里面有数据。 Socket的Send方法只是把数据写入到发送缓冲区里,具体的发送过程由操作系统负责。当操作系统的发送缓冲区满了,Send方法会…

《TCP/IP网络编程》(第十五章)套接字和标准I/O

之前数据通信时&#xff0c;使用的是read&write函数以及其他各种I/O函数&#xff0c;本章将使用标准I/O函数&#xff0c;例如C语言的fopen、fgetc、fputs等等&#xff1b;C语言的cout、cin等等 1.使用标准I/O函数的优点 ①跨平台兼容性&#xff1a; 标准I/O函数通常是跨平…

大数据实训项目(小麦种子)-04、大数据实训项目JavaWeb环境搭建

文章目录 前言运行前准备工作1、安装Hadoop3.1.0配置winutils原因描述配置方式注意点&#xff08;hadoop.dll拷贝System32目录下&#xff09; 2、hive运行报错&#xff08;The dir: /tmp/hive on HDFS should be writable. &#xff09; 项目环境搭建参考资料 前言 博主介绍&a…

【LLM之RAG】RAFT论文阅读笔记

研究背景 论文针对的主要问题是如何将预训练的大型语言模型&#xff08;LLMs&#xff09;适应特定领域的检索增强生成&#xff08;RAG&#xff09;。这些模型通常在广泛的文本数据上进行预训练&#xff0c;已经表现出在广义知识推理任务上的优越性能。然而&#xff0c;在特定领…

Google Earth Engine(GEE)——在控制台上答应出一个button按钮

函数: ui.Button(label, onClick, disabled, style) A clickable button with a text label. Arguments: label (String, optional): The buttons label. Defaults to an empty string. onClick (Function, optional): A callback fired when the button is clicked. T…

面试题 17.06. 2出现的次数

题解&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;. - 力扣&#xff08;LeetCode&#xff09; 数位 DP 通用模板_哔哩哔哩_bilibili class Solution { public:int numberOf2sInRange(int n) {std::string str to_string(n);int len str.size();std::vector<std:…

SUSTAINABILITY,SCIESSCI双检期刊还能投吗?

本期&#xff0c;小编给大家介绍的是一本MDPI出版社旗下SCIE&SSCI双检“毕业神刊”——SUSTAINABILITY。据悉&#xff0c;早在2024年1月&#xff0c;ElSEVIER旗下的Scopus数据库已暂停收录检索期刊SUSTAINABILITY所发表文章&#xff0c;同时重新评估是否继续收录该期刊。随…

Pytest 读取excel文件参数化应用

本文是基于Pytest框架&#xff0c;读取excel中的文件&#xff0c;传入页面表单中&#xff0c;并做相应的断言实现。 1、编辑媒体需求 首先明确一下需求&#xff0c;我们需要对媒体的表单数据进行编辑&#xff0c;步骤如下&#xff1a; 具体表单如下图所示 1、登录 2、点击我…

electron基础使用

安装以及运行 当前node版本18&#xff0c;按照官网提供操作&#xff0c;npm init进行初始化操作&#xff0c;将index.js修改为main.js&#xff0c;执行npm install --save-dev electron。&#xff08;这里我挂梯子下载成功了。&#xff09;&#xff0c;添加如下代码至package.…