当前位置: 首页 > news >正文

10个非常基础的 Javascript 问题

Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。

根据MDN,JavaScript(通常缩写为JS)是一种轻量级的,解释性的,面向对象的语言,具有一流的功能,并且最著名的是Web页面的脚本语言,但它也用于许多非浏览器环境中。它是一种基于原型的多范式脚本语言,它是动态的,并支持面向对象,命令式和函数式编程样式。

2.什么是DOM


DOM代表文档对象模型。加载网页后,浏览器会使用HTML和CSS文件创建一个DOM。DOM由节点和元素表示。您可以使用javascript处理DOM。它是一个树状结构。

3. JS代码如何执行


要回答的问题有点大。但是我们可以简单地说一下。Javascript在浏览器上运行。几乎每个浏览器都有一个JavaScript引擎。V8是其中最受欢迎的。Chrome使用V8引擎。另一方面,Firefox使用Spider-Monkey引擎。

4. =====之间的区别


如果我这么简单地说,==仅检查两个值是否相同。它不检查这些值的类型。查看以下代码:


if(2=="2"){console.log("true")} else {console.log("false")}

上面的代码将记录为true。因为它将2和“ 2”视为相等,因为它不检查类型。

相反,===同时检查类型和质量。例如:


if(2==="2"){console.log("true")} else {console.log("false")}

这将记录为false。因为2和“ 2”的值相等,但是它们的类型不同。

5.Null(空值)与Undefined(未定义)


通常,null表示空值和不存在的值,而undefined表示已声明但尚未定义的值。尽管您也可以显式地将undefined设置为变量。


var n;console.log(typeof(n)); // undefinedvar n = null;console.log(typeof(n)); // object

有趣的是JS中的对象类型为null。

6. Var vs Let vs Const


在ES6之前,var是声明变量的唯一方法。但是现在我们有更多选择。

有一个术语作为范围。范围是指可以使用这些变量的位置。var声明是全局范围的或函数/局部范围的。

可以挂起Var,我们将在几秒钟后讨论。但是,现在让let对于变量声明更可取。当不需要稍后在代码中更改变量时,可以使用const。为了获得两者之间的区别,您可以阅读下面的文章,我认为它非常有用。

7.变量提升(Hoisting)


在javascript中,可以在声明变量之前使用变量。物理上移到代码顶部的变量和函数声明的概念称为变量提升。


console.log(num); // Returns undefined, as only declaration was hoisted, no initialization has happened at this stagevar num; // Declarationnum = 6; 

那么,let和const变量是否不会被悬挂?答案要复杂得多。所有声明(函数,var,let,const和class)都在JavaScript中吊起,而var声明使用undefined初始化,但是let和const声明保持未初始化。

8.全局变量与局部变量


在javascript中,范围分为两种方式。全局和局部。

在函数中声明的变量称为局部作用域。该变量不能在函数外部访问。相反,在函数外部声明的变量称为全局范围。可以在函数内部访问它。


var genre= "superhero" //global scope// code here can't use superhero but genrefunction myFunction() {var superhero = "Batman"; // local scope// code here CAN use superhero and genre}

9.闭包(Closure)


闭包使我们可以从内部函数访问外部函数的范围。可以通过从一个函数返回另一个函数来创建它。它为每个实例创建一个封闭的环境。例如:


function sum(x) {return function(y) {return x + y;};}var add5 = sum(5);var add10 = sum(10);console.log(add5(6));  // 11console.log(add10(6)); // 16

这里的add5和add10都是闭包。它们共享相同的定义,但存储不同的环境。

10.回调函数


根据MDN,回调函数是一个作为参数传递给另一个函数的函数,然后在外部函数内部调用该回调函数以完成某种例程或操作。例如


function greeting(name) {console.log('Hello ' + name);}function greetEmployee(name,callback) {callback(name);}greetEmployee("Dwight",greeting);

在这里,greeting函数已在greetEmployee函数内部使用。这就是我们所谓的回调函数。

感谢阅读本文。希望这能帮助到你。

🥇 评论区抽粉丝送书啦


💌 欢迎大家在评论区提出意见和建议! (抽两位幸运儿送书,实物图如下)💌

在这里插入图片描述

相关文章:

10个非常基础的 Javascript 问题

Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。 根据MDN,JavaScript(通常缩写为JS)是一种轻量级的,解释性的,面向对象的语言,具有一流的功能,并且最著名的是Web页面…...

Mysql索引(学习自用)

目录 一、索引概述 优缺点 二、索引结构 1、索引数据结构 2、索引支持结构 3、B树 4、B树 5、hash索引 6、为啥采用B树索引 三、索引分类 四、索引语法 五、索引性能分析 5.1查看执行频率 5.2慢查询日志 5.3profiling 5.4explain 六、索引使用规则 6.1验证索…...

eniops库中reduce函数使用方法

reduce 是 eniops 中的一个常用函数,用于对张量进行降维操作。它允许你通过指定维度名称和操作类型(如求和、均值等)来简化张量的形状。 import eniops import torch# 创建一个示例张量 x torch.randn(2, 3, 4)# 使用 reduce 进行降维操作 …...

阴沟翻船题——Longest Substring Without Repeating Characters

一、事件概述 今天接到一个面试,让线上做题。面试官出了个leetcode的题。题目如图所示: 我没有刷过leetcode,上学时候我们做的hdu-acm和codeforces。咋一接到题目,看到是个字符串题,并且找最长字串,第一反…...

Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系

今天刚好看到官方发布了一篇文章,用于讨论 Compose Multiplatform 和 Jetpack Compose 之间的区别,突然想起之前评论区经常看到说 “Flutter 和 CMP 对于 Google 来说项目重叠的问题”,刚好可以放一起聊一聊。 最近写的几篇内容写的太干&…...

微信小程序中实现背景图片完全覆盖显示,可以通过设置CSS样式来实现

wxml页面代码 <view class"beijing"></view>wxss样式代码 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位&#xff1a;绝对定位 */position: absolute;/* 上下左右都定位到…...

【0x0012】HCI_Delete_Stored_Link_Key命令详解

目录 一、命令参数 二、命令格式及参数 2.1. HCI_Delete_Stored_Link_Key 命令格式 2.2. BD_ADDR 2.3. Delete_All 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. Status 3.3. Num_Keys_Deleted 四、命令执行流程 4.1. 命令发送阶段 4.2. 控制器处理阶段…...

console的各种方法

console除了常用的log方法&#xff0c;还有很多方便的方法。 console.table 表格 将数据以表格形式展示 console.group 分组 console.group、console.groupEnd&#xff1a;开启、结束分组&#xff0c;使结构更加清晰 console.dir 对象 打印函数或dom时&#xff0c;log无法打…...

spring boot关于系统首页自动跳转拼接到index

业务说明 通过http://localhost:8091访问服务器时,会动态的跳转到系统的欢迎页面. 实现原理: 说明程序启动时会自动的加载一个默认的请求路径(url:http://localhost:8091/) index 之后动态的拼接前缀和后缀. /WEB-INF/views/index.jsp...

指针生成网络(PGN)详细指南(引入)

一、Seq2Seq模型&#xff1a;编码-解码框架的开山之作 我们首先要了解的是seq2seq&#xff08;Sequence-to-Sequence&#xff09;模型。它最早由Google在2014年的一篇论文中提出&#xff0c;是第一个真正意义上的端到端的编码器-解码器&#xff08;Encoder-Decoder&#xff09…...

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设

浪潮云洲工业互联网有限公司&#xff08;以下简称为“浪潮云洲”&#xff09;成立于2018年&#xff0c;定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前&#xff0c;浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…...

k8s 蓝绿发布、滚动发布、灰度发布

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;蓝绿发布、滚动发布、灰度发布&#xff08;金丝雀发布&#xff09;是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明&#xff0c;并给出相应的例子。 蓝绿发布 蓝绿发布是一种无缝切换版本的部署策…...

UWB原理:AOA测角原理Angel of Arrival

AOA测角原理Angel of Arrival 准备工作: UWB默认使用channel=9,Frequency = 7987.2mMhz,约8GHz。 波长 天线RX1, RX2间距一般为20mm左右,假如发射端TX离2个RX距离2m=2000mm,大约是100倍天线间距。2个入射角可以近似相同。 测角原理: <...

plus.runtime.install在android10无效

在 Android 10 中&#xff0c;使用 plus.runtime.install 方法来进行动态安装应用或进行其他操作可能会失效。这是因为从 Android 10 开始&#xff0c;操作系统在安全性和隐私方面做了很多改进&#xff0c;特别是与应用安装相关的权限变更。 在 Android 10&#xff08;API 级别…...

7.C++中的函数

C中的函数 在 C 中&#xff0c;函数是一个重要的概念&#xff0c;它是将一段相对独立的、完成特定任务的代码封装起来的程序模块。以下是关于 C 中函数的详细介绍&#xff1a; 函数的定义 函数定义由函数头和函数体组成&#xff0c;其一般形式如下&#xff1a; 返回值类型 …...

上位机知识篇---Python数据图表可视化

文章目录 前言第一部分&#xff1a;Matplotlib1. 图形和轴&#xff08;Figure and Axes&#xff09;FigureAxes创建一个新的图形在图形中添加一个或多个轴 2. 绘图命令绘制折线图绘制散点图绘制条形图绘制饼图绘制直方图等高线图&#xff08;Contour plot&#xff09;&#xff…...

详解:TCP/IP五层(四层)协议模型

一.五层&#xff08;四层&#xff09;模型 1.概念 TCP/IP协议模型分为五层&#xff1a;物理层、数据链路层、网络层、传输层和应用层。这五层每一层都依赖于其下一层给它提供的网络去实现需求。 1&#xff09;物理层&#xff1a;这是最基本的一层&#xff0c;也是最接近硬件…...

【原生记忆能力 怎么让大模型拥有原生的记忆能力】

首先&#xff0c;需要明确“原生记忆能力”具体指的是什么。通常来说&#xff0c;大模型如GPT-3或GPT-4在生成回复时是基于训练数据的模式识别&#xff0c;而不是真正的记忆。所以用户可能希望模型能够持续记住之前的交互信息&#xff0c;或者在多次使用中积累知识&#xff0c;…...

百度APP iOS端磁盘优化实践(上)

01 概览 在APP的开发中&#xff0c;磁盘管理已成为不可忽视的部分。随着功能的复杂化和数据量的快速增长&#xff0c;如何高效管理磁盘空间直接关系到用户体验和APP性能。本文将结合磁盘管理的实践经验&#xff0c;详细介绍iOS沙盒环境下的文件存储规范&#xff0c;探讨业务缓…...

qml Dialog详解

1、概述 Dialog是QML&#xff08;Qt Modeling Language&#xff09;中用于显示对话框的组件&#xff0c;它提供了一个模态窗口&#xff0c;通常用于与用户进行重要交互&#xff0c;如确认操作、输入信息或显示警告等。Dialog组件具有灵活的布局和样式选项&#xff0c;可以轻松…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...