1、
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、
function a (x) { return x * 2; } var a; console.log(a);
这段代码中,其实var a并没有任何影响,输出的是a(x)这样的方法签名。
3、
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、
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、
(function(){ console.log(typeof arguments); })();
很多人会说打印的是array,其实,arguments不是数组,打印的是object。
6、
function a(){return a;} console.log(new a() instanceof a);
应该打印的是false,其实原因很简单,new a()的时候,因为return语句,得到的不是a的实例,而是a本身,a instanceof a当然是false啦。
最后,还有一个小题目是关于Function Invocation Pattern的,我在这篇文章里有写到,就不单独贴出来了。
相关推荐
总的来说,JavaScript预编译是现代前端开发中不可或缺的一部分,它提升了代码的可读性和性能,同时也降低了出错的可能性。理解预编译的原理和应用,有助于我们编写更高效、更健壮的JavaScript代码。通过使用各种预...
在JavaScript中,我们可以利用Math对象来生成随机数字,并结合基本的算术运算符(如+,-,*,/)来构造各种心算题目。例如,我们可能生成两个1到100之间的随机数,然后让用户提供它们的和、差、积或商。同时,为了...
这种即时反馈机制有利于提高学生的学习效率,因为他们可以立刻知道自己在哪些地方出错,无需等待老师批改,从而及时纠正错误。 此外,系统的灵活性也值得一提。它可以根据用户的需求生成不同数量的题目,如10道、20...
7. **错误提示和样式控制**:在验证失败时,JavaScript可以改变元素的样式(如添加红色边框或错误提示文字)以告知用户哪里出错,并提供纠正的指引。 8. **跨域资源共享(CORS)**:如果验证涉及到不同源的数据,理解...
赋值语句x="今天天气真好"不会出错,JavaScript允许不同类型之间的转换。 8. 错误。表达式的类型不仅取决于运算符,也取决于操作数。 9. 错误。两个整数相除的结果是浮点数。 10. 正确。如果a=true且b未定义,a&&b的...
前言:javascript里变量作用域是个经常让人头痛抓狂的问题,下面通过10++个题目,对经常遇到又容易出错的情况进行了简单总结,代码样例很短很简单 题目一 代码如下: var name = ‘casper’; alert(name); /...
23. **JavaScript语法**:题目23中,`a*b`不是合法的JavaScript标识符,因为它包含非法字符*。 24. **Windows设置**:题目24指出双击任务栏时间可以修改日期,这是正确的。 25. **文件删除**:在Windows中,从硬盘...
### 华为OD机试C卷 - 出错的或电路题目分析与解答 #### 题目背景 本题目来源于华为OD机试C卷,主要考察的是算法设计能力,特别是针对二进制数处理的理解与应用。题目背景是某生产门电路的厂商发现其生产的或门电路...
Exercism是一个在线平台,它提供了各种编程语言的练习题目,帮助开发者提升技能。在本案例中,"exercism_solutions"是一个针对JavaScript轨道问题的解决方案集合,用户在这个项目中分享了他们如何解决Exercism提供的...
传统的教学管理模式下,学生信息管理和成绩记录等工作通常依赖于人工操作,这种方式不仅效率低下,而且容易出错。特别是在处理大量数据时,传统方法往往会暴露出诸多不足,如安全性差、准确性不高、灵活性不足等问题...
题目展示了基于JSP、JavaScript、Tomcat和SQL的技术栈。 **知识点:** - **JSP**:Java Server Pages,用于生成动态网页。 - **JavaScript**:前端脚本语言,用于实现交互功能。 - **Tomcat**:轻量级应用服务器,...
在【毕设 源码】中,"yuanqew"可能是源代码文件夹的名字,其中可能包含了小程序的前端代码(如WXML、WXSS、JavaScript)、后端服务器接口代码(如Python、Java、Node.js)、数据库脚本(如SQL)、配置文件以及相关的...
- **题目**: Javascript中OnChange()事件产生于 i] Textbox中的内容发生变化 ii] Textarea中的内容发生变化 iii] 选择listbox中的项目 iv] 选中checkbox **正确答案**: D - **解析**: `onChange`事件通常...
错题回顾:用户可以查看自己在测试中出错的题目,进行针对性的复习。 学习记录:用户可以查看自己的学习记录,了解自己的学习进度和效果。 词汇收藏:用户可以收藏自己觉得重要的词汇,方便以后复习。 总的来说,...
这些题目涵盖了计算机科学和技术的多个方面,主要涉及到编程语言(Python、JavaScript)、数据库管理、CSS样式、数据处理(Excel公式)、多线程同步以及程序调试等知识点。下面将对每个题目进行详细的解释: 1. ...
2. **编程语言语法**:无论使用哪种编程语言(如Python、Java、C++或JavaScript),都需要遵循特定的语法结构来实现加减运算。这包括变量声明、赋值、算术运算符的使用等。 3. **数据类型和数据结构**:加减运算...
2. **用户界面**:JavaScript将用于创建一个用户友好的界面,展示题目、接收用户输入、显示结果和反馈。这可能涉及到DOM操作(Document Object Model),用于在网页上添加、修改或删除元素。 3. **逻辑处理**:当...
FizzBuzz问题是一个经典的编程面试题目,它的目标是编写一个程序,打印从1到给定数n之间的所有数字,但有以下规则: 1. 当数字可以被3整除时,输出"Fizz"。 2. 当数字可以被5整除时,输出"Buzz"。 3. 当数字同时可以...
**题目:** 下列语句中,正确打开名为“window2”的新窗口的JavaScript语句是... **答案:** D. window.open("http://www.sinA.tom.cn", "window2") **解析:** 在JavaScript中,`window.open(url, name, features)` ...
2. **数据管理**:游戏中的句子和段落存储为数据,JavaScript负责处理这些数据,随机选择题目并隐藏特定单词,实现每次游戏的多样性和挑战性。 3. **慈善捐赠集成**:JavaScript可以与支付接口进行交互,当玩家成功...