几道容易出错的JavaScript题目

下面这几道JavaScript题目大多来自于周五的一个小分享。都是很小的题目,但是很容易犯错。有一些是语言特性使然,有一些则是语言本身没有设计好而留下的陷阱。结果就是,遇到的人很容易陷进去骂娘,这些东西是略有些反直觉,感兴趣的不妨看看,平时我们还是尽量少些这样似是而非的代码。

1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Container( properties ) {
     var objthis = this ;
     for ( var i in properties ) {
         ( function (){
                 var t = properties[i];
                 objthis[ "get" + i ] = function () { return t;};
                 objthis[ "set" + i ] = function (val) {t = val;};
         })();
     }
}
 
var prop = {Name : "Jim" , Age : 13};
var con = new Container(prop);
console.log(con.getName());
 
con.setName( "Lucy" );
console.log(con.getName());
console.log(prop.Name);

这段代码会输出什么?前面两行分别是“Jim”和“Lucy”,这不会有问题;但是第三行应该输出的是“Jim”,但是有的人会误认为prop对象已被修改,故输出“Lucy”。其实在匿名函数中,properties[i]的值已经赋给了临时变量t,之后闭包对于外部变量的引用完全由t这个媒介来完成,因此prop传入以后并未发生任何属性的更改。

2.

1
2
3
4
5
function a (x) {
     return x * 2;
}
var a;
console.log(a);

这段代码中,其实var a并没有任何影响,输出的是a(x)这样的方法签名。

3.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
c = 999;
var c = 888;
console.log( this .c); //①
function b (x, y, c) {
     c = 6;
     arguments[2] = 10;
     console.log(c); //②
     console.log( this .c); //③
     
     var c = 6;
     console.log(c); //④
     console.log( this .c); //⑤
}
b(1, 2, 3, 4);

这道题是比较变态的。

  • 第①处,this指的是window,在window下,c、this.c、var c在这里指的是同一个东西,看透这一点就好办了。打印的是888。
  • 第②处,方法体中,参数c和arguments[2]指的是同一个地址,所以把后者赋为10的时候,打印的是10,不是6。
  • 第③处,this指的是window,打印的是888。
  • 第④处,打印的是6。
  • 第⑤处,打印的是888。

4.

1
2
3
4
5
6
7
8
9
var start = new Date();
setTimeout(
     function (){
         var end = new Date();
         console.log(end - start);
     },
     1000
);
while ( new Date() - start < 2000);

JavaScript因为是单线程工作的,因此虽然毁掉函数设置了1000毫秒后执行,事实上在1000毫秒的时候根本得不到执行,等待到while循环执行完毕后(因此已经是2000毫秒以后了),才去执行,因此输出应该是一个大于2000的数字。

5.

1
2
3
( function (){
     console.log( typeof arguments);
})();

很多人会说打印的是array,其实,arguments不是数组,打印的是object。

6.

1
2
function a(){ return a;}
console.log( new a() instanceof a);

应该打印的是false,其实原因很简单,new a()的时候,因为return语句,得到的不是a的实例,而是a本身,a instanceof a当然是false啦。

最后,还有一个小题目是关于Function Invocation Pattern的,我在这篇文章里有写到,就不单独贴出来了。

文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》

北京国药新创科技发展有限公司 笔试 Java部分(35分) 1、 以下哪项是接口的正确定义?( ) 3分 A、interface X { voidfun(){}} B、abstract interface X{ void fun()} C、abstractinterface Xextends A1,A2{abstractvoidfunc(){};} D、interface_WB{ void__func();} 2、B extends X, C extends B 并且在Java源代码... 阅读详情

相关推荐

Robocorp+Robot Framework学习记录【初学者课程:一级课程】

以下内容均来自:https://robotframework.org/?tab=2#getting-started。通过官网的学习和本地实际安装使用体验而来,本文仅记录学习过程。 Robot Framework介绍 Robot Framework 是一个通用的开源自动化框架。它可用于测试自动化和机器人过程自动化 (RPA)。 Robot Framework环境配置及安装 具体请见:Win10环境下安装pytho、pip与Robot Framework 学习过程与等级划分 官方认为Robot Framew.

OwenDom的博客 5374

收集了一些容易出错的题,可能大家也不会注意到的基础知识(js)

---恢复内容开始--- 1、题中运用到函数表达式、构造函数、原型、优先级、this、 2、参数影响 3、对原型的运用 4、递归 5、基本类型与引用类型传递 6、优先级 7、自调用函数 ---恢复内容结束--- 转载于:https://www.cnblogs.com/code-ChickenSoup/p/7128659.html...

bangshen0757的博客 186

电源管理芯片PMIC

(Power Management Integrated Circuits,简称:将电源电压转换为电子设备各部分所需的适当电压水平,包括升压(Boost)、降压(Buck)和升降压(Buck-Boost)转换。:控制和限制流向电子设备各部分的电流,以保护组件免受过电流损害。:管理多个电源轨,为不同的部分提供稳定的电能控制。电源轨指电路板上传输电力的线路。电源监控:提供过电压、欠电压、过电流、过热和短路保护,以防止电子设备损坏。:通过高效的电源转换技术,减少能量损耗,提高能源利用效率。

qq_42786033的博客 1万+

javascript编程容易出现的11个错误

javascript是比较容易学的。但是,对于这门语言需要有一些值得注意的地方。本文将指出javascript编程中可能犯过的10个错误 错误1-使用全局变量 如果你刚开始javascript编程,可能会觉得全局变量很好用。事实上,刚开始javascript编程,你可

精彩人生 618

Kafka 系列 —(17)Kafka 流式处理:Kafka Streams架构、使用场景、框架选择

本文介绍了KafkaStreams的架构特点、应用场景及与其他流处理框架的比较。KafkaStreams作为嵌入式分布式流处理库,其核心架构包含流处理器、任务、拓扑和本地状态存储,具备自动容错和伸缩能力。适用于实时监控、ETL、聚合、Join、物化视图等低延迟场景。与Flink、Spark相比,KafkaStreams适合简单架构和微服务,而Flink适合大规模处理,Spark更适合批处理。选择框架需根据具体场景需求,如微服务推荐KafkaStreams,大规模处理推荐Flink。

moton2017的博客 1631

什么是 SAP PCE?

SAP Private Cloud Edition 是一种基于云计算的部署模式,它结合了公有云的灵活性和私有云的安全性,为企业提供了量身定制的云服务。在 PCE 环境中,SAP 托管和维护客户的应用系统(如 SAP S/4HANA、SAP SuccessFactors 或 SAP BW/4HANA),同时客户拥有更高的定制化权限。专属环境:每个客户在云中拥有独立的资源,这保障了更高的安全性和性能。全面托管:SAP 提供基础架构、系统管理和更新服务,降低了客户的运维成本。灵活扩展。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2247

Java数组练习一(数组遍历控制)

主要发了一些关于数组的练习,在学习数组后可以自己做一下强化自己的记忆,更加熟悉的掌握数组一些多变,并不局限数组基础的定义,遍历等等

斗鹰的技术专栏 3720

基于Python的军事装备信息爬虫实战:Scrapy+Playwright+智能反反爬技术

本文将详细介绍如何使用Python构建一个高效的军事装备信息爬虫系统。我们将从基础的HTTP请求开始,逐步深入到使用Scrapy框架、Playwright浏览器自动化以及最新的反反爬技术。文章包含完整的代码实现、性能优化策略以及数据处理方案,旨在为读者提供一个全面的军事信息爬取解决方案。关键词:Python爬虫、军事装备、Scrapy、Playwright、反反爬。

2201_76125261的博客 1155

几道容易出错的JavaScript题目(转)

下面这几道JavaScript题目大多来自于周五的一个小分享。都是很小的题目,但是很容易犯错。有一些是语言特性使然,有一些则是语言本身没有设计好而留下的陷阱。结果就是,遇到的人很容易陷进去骂娘,这些东西是略有些反直觉,感兴趣的不妨看看,平时我们还是尽量少些这样似是而非的代码。 1. 1 2 3 4 5 6 7 8

aliqing777的专栏 577

RedCap:一种通信技术的概述

总结起来,RedCap是一种基于数据包交换的通信技术,它提供了一种高效、可靠的数据传输机制。通过使用RedCap,我们可以轻松地发送和接收数据包,并确保数据的完整性和正确性。在上面的示例中,我们首先导入了RedCap库,并创建了一个RedCap实例。然后,我们定义了目标地址和源地址,并创建了一个数据包,其中包含了目标地址、源地址和要发送的数据。本文将介绍RedCap的基本原理和使用方法,并提供一些相关的源代码示例。RedCap还提供了其他一些功能,如数据包的重传机制、流量控制和拥塞控制等。

YgjWeb的博客 900

爬虫不宕机!2026自愈式爬虫开发(Python+AI自动应对页面改版)

传统爬虫最大的痛点是"页面一改就宕机":前端布局调整、CSS选择器失效、数据结构变化,都会导致爬虫瘫痪,需要人工逐行修改代码。2026年,基于AI的自愈式爬虫成为行业标配:通过大模型自动识别页面结构变化、适配新的元素定位规则、修复数据提取逻辑,实现"页面改版不宕机,AI自动自愈"的企业级效果。本文从零讲解如何用Python+AI构建自愈式爬虫,聚焦页面改版自适应、故障自动修复、规则动态更新三大核心能力,附带可直接落地的生产级代码。问题场景解决方案LLM生成规则格式错误。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1215

Node.js几道面试题

一些声明 通过这些问题就来判断一个人的Node.js水平是不太严谨的,但是它能让你对面试者在Node.js上的经验如何有个大概的了解。 但是显然,这些问题并不会告诉你面试者思考问题的方式。 Show me the code. 结合一些编程题来考察面试者吧 大家都是人,不要做一个死板不近人情的面试官哦。 什么是error-first的回调...

weixin_33994429的博客 121

1-Wire 单总线硬件结构及软件时序分析(实测波形+C代码分析)

1根线就可以通信,是不是很神奇?因为其节省I/O口的优点而被广泛使用!

记得诚 1万+

你真的已经搞懂JavaScript了吗?

题目一: if (!("a" in window)) { var a = 1; } alert(a); 题目二: var a = 1, b = function a(x) { x && a(--x); }; alert(a); 题目三: function a(x) { return x * 2; } var a; al

itmyhome的专栏 2543

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JavaScript快速入门:2小时掌握核心概念与实战应用

JavaScript作为前端开发的核心语言,其核心在于通过操作浏览器对象模型(DOM)和响应事件来实现动态网页交互。理解变量、函数、DOM操作和流程控制等基础概念,是掌握前端开发逻辑的关键。这些技术不仅能够提升网页的交互性和用户体验,还能为后续学习现代前端框架打下坚实基础。在实际应用中,从简单的待办事项列表到复杂的数据可视化,JavaScript都扮演着不可或缺的角色。本文通过一个完整的微型项目实战,帮助初学者快速建立认知地图,实现从零到一的跨越。

weixin_33885676的博客 421

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

测试题(1)

  年前的时候遇到了几道题,还和好友语音讨论到凌晨,特此记录,写博客一方面是分享,可是更重要的一方面是自己方便温习,毕竟笔记不好找。 1.(function test() { var a=b=5; alert(typeof a);//number alert(typeof b);//number alert(a);//5 ...

可了不得 585

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【JavaScript】LeetCode:16-20

【代码】【JavaScript】LeetCode:16-20。

weixin_45980065的博客 1164

2019 Python100道 面试 题,你会几道?

0 遇到过得反爬虫策略以及解决方法? 1.通过headers反爬虫 2.基于用户行为的发爬虫:(同一IP短时间内访问的频率) 3.动态网页反爬虫(通过ajax请求数据,或者通过JavaScript生成) 4.对部分数据进行加密处理的(数据是乱码) 解决方法: 对于基本网页的抓取可以自定义headers,添加headers的数据 使用多个代理ip进行抓取或者设置抓取的频率降低一些, 动态网页的可以使...

Python热爱者的博客 7242

2019 Python 面试 100 问,你会几道?

以下内容出自小程序「编程面试题库」0 遇到过得反爬虫策略以及解决方法?1.通过headers反爬虫解决方法:对于基本网页的抓取可以自定义headers,添加headers...

zero的博客 1474

LeetCode题解:第一个错误的版本

本文是二分查找-模版II 的第一题,后面的几道题的也算是本模版的微调,加油~

余光的博客 4248

async function_实例说明async/await的执行顺序

这几天见到几道关于js执行顺序的题,普通js还好,但牵扯到async和await函数时几乎道道错,这就很郁闷了。痛定思痛,综合了几篇前辈的文章解析后,大概摸清了这个新语法的猫腻。特写此文。 关于js基本执行顺序和async/await的解析,可参考这几篇前辈写的文章: 1. https://juejin.im/post/59e85eebf265da430d571f89 2. https://se...

weixin_39633807的博客 402

今日模拟前端面试10道题 看你能答对几道 24.4.27

Redux是一个用于管理和更新JavaScript应用的状态的库,它主要用于React应用。Redux的核心思想是将所有的组件状态存储在一个单一的中心化的store中,并通过纯函数来进行状态的更新,这样可以保证状态的可预测性和可追踪性。性能问题:虽然RN在很多情况下能够提供接近原生应用的性能,但在一些复杂或高度交互的场景下,它可能无法与完全的原生应用相匹敌。这是因为RN需要将JavaScript代码桥接到原生组件,这会导致一定的性能开销。更新滞后。

极客前端探索者的博客 793
上一篇: 做产品的主人
下一篇: JVM问题定位工具
RayChase
博客等级 码龄20年 71粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值