- 浏览: 25380 次
- 性别:
- 来自: 北京
最新评论
-
梧栖凤:
得把未经处理的脚本分享出来啊!
跨浏览器可8方向拖拽剪裁框 -
percy30856:
好东西 正在弄这个玩意儿 参考学习了
Animate Baseclass -
percy30856:
菲哥 你的头像,应该换成未满18岁禁止查看
很棒的时间线控件 -
stoneskin:
:哭笑写javascript的也是猿。。。。我们很多猿都是从写 ...
核心只要两行即可实现添加或移除className -
jamesmos:
enix2212 写道tiannet 写道enix2212 写 ...
核心只要两行即可实现添加或移除className
测试题来自《Another JavaScript quiz》Posted in 'JavaScript' by James on April 27th, 2010
共25道题,测试内容包括运算符,表达式,语句,javascript语言特性,JSON语法,数组,正则等。
大家可以测一测自己在这方面知识掌握的程度。
在题后有我参考原博主文章和评论的题目解析,大家竞相拍砖,转载请注明。
The quiz:
1:
1: 1 && 3
2:
1: 1 && "foo" || 0
3:
1: 1 || "foo" && 0
4:
1: (1,2,3)
5:
1: x = {shift:[].shift};
2: x.shift();
3: x.length;
6:
1: {foo:1}[0]
7:
1: [true, false][+true, +false]
8:
1: ++'52'.split('')[0]
9:
1: a: b: c: d: e: f: g: 1, 2, 3, 4, 5;
10:
1: {a: 1, b: 2}[["b"]]
11:
1: "b" + 45
12:
1: {a:{b:2}}
13:
1: (function(){}())
14:
1: [1,2,3,4,5][0..toString.length]
15:
1: ({} + 'b' > {} + 'a')
16:
1: Number.prototype.x = function(){ return this === 123; };
2: (123).x();
17:
1: Array(2).join()
18:
1: vars: var vars = vars;
19:
1: { foo = 123 }
20:
1: x = 1; (function(){return x; var x = 2;}())
21:
1: delete [].length;
22:
1: RegExp.prototype.toString = function() {return this.source};
2: /3/-/2/;
23:
1: {break;4;}
24:
1: 'foo' == new function(){ return String('foo'); };
25:
1: 'foo'.split('') + []
解析:
1: #1. //3 : 1为true,进而&&运算继续执行右边的表达式,结果为3
2: #2. //"foo" : 逻辑运算符,和上面的一样,当运算至"foo"时,表达式已经成功,不再执行||右边的表达式
3: #3. //1 : 1转换为bool为true,直接返回,不再往下执行
4: #4. //3 : 总返回最后一个值
5: #5. //0 : 当x执行过shift()方法后,x就会拥有length属性,并且返回的值就是0
6: #6. //[0] : 两个表达式,返回最后一个表达式的结果
7: #7. //true : 对bool+运算,结果是1或者0于是[true,false][1,0],而这种式子总是取最后一个,[true,false][0]
8: #8. //6 : .运算符优先级大于++运算符,'52'.split('')->['5','2'];取[0]得5;++得6
9: #9. //5 : 忽略掉前面所有的:x 得到:a:1,2,3,4,5 结果:5
10: #10. //SyntaxError。也许你会惊讶,这不是json格式的数据么,肿么会报错?我刚开始也很诧异,实际上这里不是javascript object,
而是块级结构的语句执行,因为没有赋值语句。而作为普通语句执行的时候,{a:1;b:2}这样才对。或者a={a:1,b:2}
11: #11. //"b45" : 字符串与数字加法运算,总是返回字符串
12: #12. //2 : 只不过是两个语句块而已,跟第9题实际上是一种情况a:b:2,返回2
13: #13. //undefined : 匿名空函数自执行,由于没有显示return语句,自动返回undefined。
14: #14. //2 : 这个很有意思。分两部分来说,先说0..toString。如果在一个整数后面加".",那么javascript会认为这是浮点数的点,
而不是属性调用的点,如果在浮点数后面加点,那么javascript就会认为是属性调用,因为javascript无法区分此时用户到底是想进行。于是0..
就变成了调用属性,(这是偶的猜测)这时会把0.转换成对象,调用其toString函数。倘若直接0.toString是会出现语法错误的。你可以测试一
下1.1.toString;.0.toString等,都是可以调用的。再说0..toString.length的结果:1,为啥子是1捏,调用函数的length属性返回的结果是函
数的形参个数,javascript默认number.toString函数的形参个数为1。所以,[1,2,3,4,5][1]结果是2。
15: #15. //true : {}+"b" 对象和字符串相加 –> "[object Object]b",之后再进行逻辑比较,"b" > "a"。请不要直接测试{}+"b"这样你会
得到NaN,为什么呢,如果这样的话就是先执行{}这个语句块,再执行 +"b" 结果自然是NaN。
16: #16. //false 严格比较,左边对象,右边数字,类型不匹配。
17: #17. //'','' : 数组使用join后转换为字符串,但是是空数组,所以得到上述结果。
18: #18. //undefined : 都是咸鱼,再怎么翻身,还是咸鱼。都是undefined,最后当然还是undefined。
19: #19. //123 : 块语句执行。跟对象神马的有半点儿毛线关系。
20: #20. //undefined : 据说javascript每引入一个块作用域都会扫描块作用域中的"var",并且将有var 生命的变量值设置为undefined,
而不管之前是否有过之类的声明,包括函数体外。
21: #21. //false : 删毛啊,这能删么?【delete only returns false when a property can not be deleted.】
参考:http://perfectionkills.com/understanding-delete/ 文中说的很清楚,内置函数的某些属性是不能被删除的,类似于arguments,
length,函数的局部变量(function(){ var a = 1; return delete a })()等。
22: #22. //1 : 先修改正则表达式的原型链上的toString函数,返回当前正则实例对象的文本形式。然后就是字符串相减了,这时候会自
动转换为number进行运算。
23: #23. // SyntaxError : break语句只能放在循环和switch分支语句中
24: #24. //false : 借用Damian Wielgosik非常经典的解释(new function(){ return String('foo'); }).toString() != 'foo'
25: #25. //"f,o,o" : 字符串转换成数组之后和数组相加再转换成字符串,可以找两个数组相加试试,借用Damian Wielgosik的解释
Just consider e.g. [1, 2] + [3, 4] and see how arrays are casted to string.
共25道题,测试内容包括运算符,表达式,语句,javascript语言特性,JSON语法,数组,正则等。
大家可以测一测自己在这方面知识掌握的程度。
在题后有我参考原博主文章和评论的题目解析,大家竞相拍砖,转载请注明。
The quiz:
1:
1: 1 && 3
2:
1: 1 && "foo" || 0
3:
1: 1 || "foo" && 0
4:
1: (1,2,3)
5:
1: x = {shift:[].shift};
2: x.shift();
3: x.length;
6:
1: {foo:1}[0]
7:
1: [true, false][+true, +false]
8:
1: ++'52'.split('')[0]
9:
1: a: b: c: d: e: f: g: 1, 2, 3, 4, 5;
10:
1: {a: 1, b: 2}[["b"]]
11:
1: "b" + 45
12:
1: {a:{b:2}}
13:
1: (function(){}())
14:
1: [1,2,3,4,5][0..toString.length]
15:
1: ({} + 'b' > {} + 'a')
16:
1: Number.prototype.x = function(){ return this === 123; };
2: (123).x();
17:
1: Array(2).join()
18:
1: vars: var vars = vars;
19:
1: { foo = 123 }
20:
1: x = 1; (function(){return x; var x = 2;}())
21:
1: delete [].length;
22:
1: RegExp.prototype.toString = function() {return this.source};
2: /3/-/2/;
23:
1: {break;4;}
24:
1: 'foo' == new function(){ return String('foo'); };
25:
1: 'foo'.split('') + []
解析:
1: #1. //3 : 1为true,进而&&运算继续执行右边的表达式,结果为3
2: #2. //"foo" : 逻辑运算符,和上面的一样,当运算至"foo"时,表达式已经成功,不再执行||右边的表达式
3: #3. //1 : 1转换为bool为true,直接返回,不再往下执行
4: #4. //3 : 总返回最后一个值
5: #5. //0 : 当x执行过shift()方法后,x就会拥有length属性,并且返回的值就是0
6: #6. //[0] : 两个表达式,返回最后一个表达式的结果
7: #7. //true : 对bool+运算,结果是1或者0于是[true,false][1,0],而这种式子总是取最后一个,[true,false][0]
8: #8. //6 : .运算符优先级大于++运算符,'52'.split('')->['5','2'];取[0]得5;++得6
9: #9. //5 : 忽略掉前面所有的:x 得到:a:1,2,3,4,5 结果:5
10: #10. //SyntaxError。也许你会惊讶,这不是json格式的数据么,肿么会报错?我刚开始也很诧异,实际上这里不是javascript object,
而是块级结构的语句执行,因为没有赋值语句。而作为普通语句执行的时候,{a:1;b:2}这样才对。或者a={a:1,b:2}
11: #11. //"b45" : 字符串与数字加法运算,总是返回字符串
12: #12. //2 : 只不过是两个语句块而已,跟第9题实际上是一种情况a:b:2,返回2
13: #13. //undefined : 匿名空函数自执行,由于没有显示return语句,自动返回undefined。
14: #14. //2 : 这个很有意思。分两部分来说,先说0..toString。如果在一个整数后面加".",那么javascript会认为这是浮点数的点,
而不是属性调用的点,如果在浮点数后面加点,那么javascript就会认为是属性调用,因为javascript无法区分此时用户到底是想进行。于是0..
就变成了调用属性,(这是偶的猜测)这时会把0.转换成对象,调用其toString函数。倘若直接0.toString是会出现语法错误的。你可以测试一
下1.1.toString;.0.toString等,都是可以调用的。再说0..toString.length的结果:1,为啥子是1捏,调用函数的length属性返回的结果是函
数的形参个数,javascript默认number.toString函数的形参个数为1。所以,[1,2,3,4,5][1]结果是2。
15: #15. //true : {}+"b" 对象和字符串相加 –> "[object Object]b",之后再进行逻辑比较,"b" > "a"。请不要直接测试{}+"b"这样你会
得到NaN,为什么呢,如果这样的话就是先执行{}这个语句块,再执行 +"b" 结果自然是NaN。
16: #16. //false 严格比较,左边对象,右边数字,类型不匹配。
17: #17. //'','' : 数组使用join后转换为字符串,但是是空数组,所以得到上述结果。
18: #18. //undefined : 都是咸鱼,再怎么翻身,还是咸鱼。都是undefined,最后当然还是undefined。
19: #19. //123 : 块语句执行。跟对象神马的有半点儿毛线关系。
20: #20. //undefined : 据说javascript每引入一个块作用域都会扫描块作用域中的"var",并且将有var 生命的变量值设置为undefined,
而不管之前是否有过之类的声明,包括函数体外。
21: #21. //false : 删毛啊,这能删么?【delete only returns false when a property can not be deleted.】
参考:http://perfectionkills.com/understanding-delete/ 文中说的很清楚,内置函数的某些属性是不能被删除的,类似于arguments,
length,函数的局部变量(function(){ var a = 1; return delete a })()等。
22: #22. //1 : 先修改正则表达式的原型链上的toString函数,返回当前正则实例对象的文本形式。然后就是字符串相减了,这时候会自
动转换为number进行运算。
23: #23. // SyntaxError : break语句只能放在循环和switch分支语句中
24: #24. //false : 借用Damian Wielgosik非常经典的解释(new function(){ return String('foo'); }).toString() != 'foo'
25: #25. //"f,o,o" : 字符串转换成数组之后和数组相加再转换成字符串,可以找两个数组相加试试,借用Damian Wielgosik的解释
Just consider e.g. [1, 2] + [3, 4] and see how arrays are casted to string.
发表评论
-
[javascript]9宫格拖拽拼图游戏 puzzle
2012-04-29 09:51 16431.跨浏览器,主流浏览器都可以运行2.纯javascript开 ... -
避免悲剧 密码生成器
2011-12-22 15:35 786最近被暴库的很多,密码安全成为重大问题!如何避免简单密码呢?还 ... -
jQuery创建实例与原型继承揭秘
2011-12-20 23:57 811在普通情况下 ... -
[Javascript]单例模式(singleton )
2011-12-16 15:23 1358Javascript中大家都很习惯用new运算符创建实例。现在 ... -
javascript1.7新语法
2011-12-13 18:30 9221.yield 关键字 Yield的作用与return 差不多 ... -
javascript undo redo
2011-12-09 10:55 2422在浏览器中用调试工具看调用结果 <!DOCTYPE ... -
duffsDevice 高速版
2011-11-25 17:21 838function duffsDevice(items, f ... -
ECMAScript.js2
2011-11-07 11:18 1385package { public native functio ... -
仅限正整数输入
2011-10-27 15:35 914修正了拖拽文本进输入框问题 2011.11.14 &l ... -
跨浏览器可8方向拖拽剪裁框
2011-08-15 20:01 980<!DOCTYPE html PUBLIC &quo ... -
选项卡
2011-08-12 17:36 934<!DOCTYPE html PUBLIC &quo ... -
scroll base
2011-08-04 14:25 936开发版,水平方向已完成,垂直方向没测,可以跨浏览,滚动多个当前 ... -
拖拽排序列表单例
2011-07-27 11:17 1213<!DOCTYPE html PUBLIC &quo ... -
Animate Baseclass
2011-07-12 15:47 1243以下代码仅供参考,请下载附件代码,应该是文本编辑器过滤掉了某些 ... -
很棒的时间线控件
2011-06-24 18:52 1766原生态javascript,希望大家能喜欢 functio ... -
fade方法
2011-05-27 10:12 815function fadeOut(steps){ ... -
核心只要两行即可实现添加或移除className
2011-04-29 11:10 1816<div id="abc" cl ... -
让函数有记忆能力
2011-04-28 15:34 737function addEvent(elem,evType ... -
可以跳动的手风琴 Accordion
2011-04-13 15:02 847<!DOCTYPE html PUBLIC &q ... -
javascript new 关键字的运行原理
2011-04-06 17:33 1580function javascriptNew(t){ a= ...
相关推荐
javascript-quiz, 前端开发者技术屏幕测试 JavaScript测试备注:这次测验的目的不是为了 buster 。 招聘人员要向前端开发者展示。目的是要清除一些"只使用 jQuery"申请者,但是允许那些知道JavaScript的人很容易通过...
"javascript-quiz"项目就是一个利用JavaScript构建的互动式测验,旨在帮助学习者检验和提升他们的JavaScript知识。这个测验可能是通过创建HTML页面来呈现问题,使用JavaScript处理用户交互,并可能结合CSS来实现视觉...
在"Simple Quiz Using JavaScript.zip"这个压缩包中,我们很可能找到了一个关于如何使用JavaScript实现简单问答游戏的教程或者示例代码。这个项目可能包含了一个HTML文件、CSS样式表以及JavaScript脚本来构建一个...
最后,压缩包中的"JavaScript-Quiz-Application--main"可能是一个主文件,它可能包含了整个项目的HTML、CSS和JavaScript代码。通过分析和理解这个文件,你可以看到上述技术是如何协同工作的,从而加深对Web开发的...
在本资源"Practical-Quiz-5.rar"中,我们关注的是JavaScript编程语言的相关知识。JavaScript是一种广泛应用于网页和互联网应用开发的脚本语言,它主要用于客户端的网页交互,但也可用于服务器端开发(如Node.js)。...
ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5
`Code_Quiz` 是一个基于JavaScript开发的简单多选题游戏。这个项目旨在帮助用户通过互动的方式学习和测试他们的编程知识,特别是JavaScript相关的知识。JavaScript是一种广泛使用的编程语言,用于创建动态网页和...
Build a complete, working JavaScript quiz app from scratch Table of Contents Chapter 1: Hello, JavaScript Chapter 2: Programming Basics Chapter 3: Arrays, Logic, and Loops Chapter 4: Functions ...
ssd3 practical quiz 3ssd3 practical quiz 3ssd3 practical quiz 3ssd3 practical quiz 3ssd3 practical quiz 3ssd3 practical quiz 3ssd3 practical quiz 3
【SSD3 Quiz4 知识点详解】 SSD3,全称为Software System Development 3,是卡耐基梅隆大学面向对象程序设计的一门课程。Quiz 4作为该课程的重要组成部分,旨在检验学生对面向对象编程核心概念的理解,以及在实际...
ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5
【SSD3 Quiz3答案详解】——卡耐基教程精华解析 在计算机科学与信息技术领域,固态存储(Solid State Drive, SSD)是现代数据存储技术的重要组成部分,尤其是在提升系统性能方面发挥着至关重要的作用。卡耐基梅隆...
ssd3 practical quiz 2ssd3 practical quiz 2ssd3 practical quiz 2ssd3 practical quiz 2ssd3 practical quiz 2ssd3 practical quiz 2ssd3 practical quiz 2ssd3 practical quiz 2
ssd3 practical quiz 8ssd3 practical quiz 8ssd3 practical quiz 8ssd3 practical quiz 8ssd3 practical quiz 8ssd3 practical quiz 8
ssd3 practical quiz 1ssd3 practical quiz 1ssd3 practical quiz 1ssd3 practical quiz 1ssd3 practical quiz 1 ssd3 practical quiz 1
在"Javascript_Quiz_BL"这个项目中,我们可以推测这是一个JavaScript的练习或者测试,可能是为了帮助学习者检验或提升他们在JavaScript语言上的技能。"Quiz"通常指的是包含一系列问题的测试,用于评估某人在特定主题...
在"JavaScript Quiz Test: 只是练习使用JavaScript动态创建HTML/CSS"这个项目中,我们将探讨如何利用JavaScript来动态地生成和修改HTML及CSS元素,以实现更灵活的网页设计和增强用户体验。 一、JavaScript与...
【SSD3 Quiz9答案详解】 在卡耐基教程中的SSD3(Structured Systems Design, 第3阶段)Quiz9,我们关注的是系统设计与分析的关键概念。这个阶段的学习旨在提升学员对复杂系统的设计、实现和优化能力。Quiz9可能是对...
Quiz 4作为该课程的一个环节,可能涉及了课程中的关键概念和技术。在卡耐基梅隆大学或其他提供类似课程的机构,这样的测验旨在检验学生对课程材料的理解和应用能力。 在"ssd3 quiz4答案"中,我们可能讨论以下几个...
### SSD7全部QUIZ quiz 答案解析 #### 多选题 Quiz1 ##### 题目1:电子商务系统由以下组件组成。哪些相同的组件必须包含在一个数据库中? 选项: - (a) I, II 和 III - (b) I 和 II - (c) I - (d) II **解析:** ...