`
gonnsai
  • 浏览: 8430 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一些非常蛋疼的JavaScript试题

阅读更多
JavaScript有很多地方和我们熟知的C、Java等的编程习惯不同,这些不同会产生很多让人意想不到的事情。前段时间在知乎有人发了写Javascrtip试题,觉得挺好玩的,这里跟大家分享一下。

01
(function () {  
    return typeof arguments;  
})();  

A. "object"
B. "array"
C. "arguments"
D. "undefined"


答案:A

02
var f = function g() {
        return 23;
    };
typeof g();

A. "number"
B. "undefined"
C. "function"
D. Error

答案:D

03
(function (x) {
    delete x;
    return x;
})(1);

A. 1
B. null
C. undefined
D. Error

答案:A

04
var y = 1,
    x = y = typeof x;
x;

A. 1
B. "number"
C. undefined
D. "undefined" 

答案: D

05
(function f(f) {
    return typeof f();
})(function () {
    return 1;
});

A. "number"
B. "undefined"
C. "function"
D. Error


答案:A

更多蛋疼的试题,可以看看这里 非常蛋疼的JavaScript试题
分享到:
评论
19 楼 beyondwcm 2011-06-23  
确实比较蛋疼!
18 楼 int08h 2011-06-23  
clue 写道
yf7631497 写道
clue 写道
苍山洱海 写道
第二个
运行了一下是 “number”
应该选A吧。

用的是IE吧

IE number
FF  error     太邪恶了

还有更邪恶的,IE下运行试试:
var a = function b(){
   alert("test");
};
alert(a === b);
a();
b();


解答见:http://www.iteye.com/topic/802482#1741525


这算啥,Firefox有更恶心的
if (0) {
    function abc() {
        
    }
}
abc();
17 楼 clue 2011-06-23  
yf7631497 写道
clue 写道
苍山洱海 写道
第二个
运行了一下是 “number”
应该选A吧。

用的是IE吧

IE number
FF  error     太邪恶了

还有更邪恶的,IE下运行试试:
var a = function b(){
   alert("test");
};
alert(a === b);
a();
b();


解答见:http://www.iteye.com/topic/802482#1741525
16 楼 gtssgtss 2011-06-23  
yangguo 写道
千万不要深入学javascript,否则万劫不复。


lisp难学(英文垃圾),只好学javascript了
15 楼 yxc_gdut 2011-06-23  
typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"

14 楼 yf7631497 2011-06-23  
clue 写道
苍山洱海 写道
第二个
运行了一下是 “number”
应该选A吧。

用的是IE吧

IE number
FF  error     太邪恶了
13 楼 soni 2011-06-23  
这么写容易被打死
12 楼 useryouyou 2011-06-22  
JavaScript 确实蛮有趣的
11 楼 rainsilence 2011-06-22  
yangguo 写道
千万不要深入学javascript,否则万劫不复。

你的意思是,我已经万劫不复了?
10 楼 yangguo 2011-06-22  
千万不要深入学javascript,否则万劫不复。
9 楼 clue 2011-06-22  
苍山洱海 写道
第二个
运行了一下是 “number”
应该选A吧。

用的是IE吧
8 楼 苍山洱海 2011-06-22  
第二个
运行了一下是 “number”
应该选A吧。
7 楼 super_monkey 2011-06-22  
int08h 写道
1、arguments不是object还能是啥,typeof只能返回number / string / boolean / object / function,明猜也是object……

2、函数表达式中的函数名仅在该函数的执行环境内有效,所以外面g不存在,直接访问不存在的全局属性是ReferenceError

3、var定义的(除非是在eval中用var定义)、参数、某些内置对象和宿主对象具有{DontDelete}特性,必然不能删

4、不知道在说啥,有啥区别吗?

5、就这一题有点意思,关系到进入函数时的参数顺序,依次是函数本身->参数->var声明,因此参数的f覆盖函数自己的函数名f,f()就是1,typeof 1就是number

对于技术比较泛的工程师来说,可能会蛋疼,但是对于专职的前端工程师,这些是基础……

基本功很扎实嘛。嘿嘿 我也出一题 大家共同提高
console.log(typeof name);  
console.log(typeof age);  
console.log(typeof password);  
var jsstring = "var name = 1; console.log(name);";
eval(jsstring);  
jsstring = "var age = 2; console.log(age);";
new Function(jsstring)();  
jsstring = "var password = 3; console.log(password);";
(function () {
eval(jsstring);
}());  
console.log(typeof name);  
console.log(typeof age);  
console.log(typeof password); 
6 楼 奥义之舞 2011-06-22  
gonnsai 写道
JavaScript有很多地方和我们熟知的C、Java等的编程习惯不同,这些不同会产生很多让人意想不到的事情。前段时间在知乎有人发了写Javascrtip试题,觉得挺好玩的,这里跟大家分享一下。

01
(function () {  
    return typeof arguments;  
})();  

A. "object"
B. "array"
C. "arguments"
D. "undefined"


答案:A

02
var f = function g() {
        return 23;
    };
typeof g();

A. "number"
B. "undefined"
C. "function"
D. Eorror

答案:D

03
(function (x) {
    delete x;
    return x;
})(1);

A. 1
B. null
C. undefined
D. Error

答案:A

04
(function (x) {
    delete x;
    return x;
})(1);

A. 1
B. null
C. undefined
D. Error

答案: D

05
(function f(f) {
    return typeof f();
})(function () {
    return 1;
});

A. "number"
B. "undefined"
C. "function"
D. Error


答案:A

更多蛋疼的试题,可以看看这里 非常蛋疼的JavaScript试题



3 和 4 不是一摸一样的 哎 不细心啊 
还有貌似 第二题Eorror 是怎么回事啊,只听说过Error的

表示 不淡定。。。。
5 楼 clue 2011-06-22  
int08h 写道

其实除了最后一个是很蛋疼,其他的很常见,我们一直在用,但可能你没察觉到

比如第1题,typeof用得够多了,当然对arguments用有点奇怪,但明确知道对象的typeof结果应该是什么,这点大家都做到

比如第2题,典型的自递归用法
(function checkReady() {
    if (document.readyState !== 'complete') {
        setTimeout(checkReady, 0);
    }
}());
第2题说明的一个问题是,这个checkReady在外面是用不了了,要小心些,我们自然不会在外面用,说明我们知道这一点,且一直在遇上这个问题

像第3题,如果你的脚本运行在第三方的网站上(比如广告什么的),设置全局变量的时候就会注意,用var的不能delete,所以可能尽量用window['xxx'] = abc;这样的方法,以便逻辑完成后进行delete操作,用着用着就成了一个best practice,习惯了,但如果哪一天突然思考下,反过来回顾下为什么这么写,就是现在第3题的结论

和你们的开发环境不一样,我们是基于ExtJs组件库,自己搭了一套页面框架
1. typeof一般就用Ext.isXX替代了,只有在非常底层的需要考虑性能的地方才用typeof,并且也不太会关注typeof所有可能返回的值
2. 用过var fn = function(){},也用过function foo(){},它们都能实现递归,var fn = function foo(){}这种就几乎没用过了。
(以前还用arguments.callee,但JSLint报警,就放弃了,虽然还是有些不理解)
3. 我们开发时,都是基于组件的,每个JS文件都是一个“类”,对外的只有接口、事件,全局变量是绝对禁止的
4 楼 int08h 2011-06-22  
clue 写道
的确都很蛋疼,正常开发中,基本是不会用到以上特性的,反而是应尽量避免它们。

代码写出来不只是给计算机看,还要给人看,万一哪天因为很久没用,导致自己都看不懂,岂不是很尴尬...

嗯,可能3/4题涉及的东西在解决内存释放问题时会用到,如果有闭包引用到了,置null就好。

其实除了最后一个是很蛋疼,其他的很常见,我们一直在用,但可能你没察觉到

比如第1题,typeof用得够多了,当然对arguments用有点奇怪,但明确知道对象的typeof结果应该是什么,这点大家都做到

比如第2题,典型的自递归用法
(function checkReady() {
    if (document.readyState !== 'complete') {
        setTimeout(checkReady, 0);
    }
}());
第2题说明的一个问题是,这个checkReady在外面是用不了了,要小心些,我们自然不会在外面用,说明我们知道这一点,且一直在遇上这个问题

像第3题,如果你的脚本运行在第三方的网站上(比如广告什么的),设置全局变量的时候就会注意,用var的不能delete,所以可能尽量用window['xxx'] = abc;这样的方法,以便逻辑完成后进行delete操作,用着用着就成了一个best practice,习惯了,但如果哪一天突然思考下,反过来回顾下为什么这么写,就是现在第3题的结论
3 楼 clue 2011-06-22  
的确都很蛋疼,正常开发中,基本是不会用到以上特性的,反而是应尽量避免它们。

代码写出来不只是给计算机看,还要给人看,万一哪天因为很久没用,导致自己都看不懂,岂不是很尴尬...

嗯,可能3/4题涉及的东西在解决内存释放问题时会用到,如果有闭包引用到了,置null就好。
2 楼 karaschee 2011-06-22  
3和4不是一样的吗?
1 楼 int08h 2011-06-22  
1、arguments不是object还能是啥,typeof只能返回number / string / boolean / object / function,明猜也是object……

2、函数表达式中的函数名仅在该函数的执行环境内有效,所以外面g不存在,直接访问不存在的全局属性是ReferenceError

3、var定义的(除非是在eval中用var定义)、参数、某些内置对象和宿主对象具有{DontDelete}特性,必然不能删

4、不知道在说啥,有啥区别吗?

5、就这一题有点意思,关系到进入函数时的参数顺序,依次是函数本身->参数->var声明,因此参数的f覆盖函数自己的函数名f,f()就是1,typeof 1就是number

对于技术比较泛的工程师来说,可能会蛋疼,但是对于专职的前端工程师,这些是基础……

相关推荐

    前端JavaScript 试题.html

    前端JavaScript 试题.html

    JavaScript试题集7.doc

    JavaScript是一种广泛应用于网页和网络应用开发的编程语言,它具有轻量级、解释型和动态类型的特点。在HTML中,JavaScript代码通常放置在`<script>`标签内,而不是`<javascript>`、`<js>`或`<scripting>`标签(问题1...

    深入理解JavaScript系列

    本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript...本书内容由浅入深,非常适合想要快速学习JavaScript编程或者深入钻研JavaScript的读者参考。

    JavaScript标准参考教程

    《JavaScript标准参考教程》是一本全面介绍JavaScript编程语言的书籍,其内容涵盖了从基础语法、数据类型、函数到高级特性如数组操作、错误处理、编程风格等各个方面的知识。阮一峰作为作者,将多年的经验和网络资料...

    Web程序设计基础_Html+JavaScript部分_试题和答案

    本资源包“Web程序设计基础_Html+JavaScript部分_试题和答案”旨在帮助学习者深入理解这两种语言的基本概念、语法以及在实际开发中的应用。 HTML,全称为超文本标记语言,是网页内容的主要载体。它通过一系列标签来...

    JavaScript文档

    最后,“JavaScript对象与数组参考大全 .chm”专门关注JavaScript中的对象和数组,这是JavaScript编程中非常关键的部分。JavaScript是一种基于对象的语言,其核心就是对象和原型链。这个文档可能会详细讲解对象的...

    javascript模拟试题.doc

    以下是对JavaScript模拟试题中涉及的知识点的详细解释: 1. JavaScript代码通常放置在HTML的`<script>`标签内,正确选项是A。 2. 输出"Hello World"的正确JavaScript语法是使用`document.write("Hello World")`,...

    javaScript增强交互效果机试题

    本题主要涉及的是使用JavaScript配合HTML和CSS来构建一个类似于“腾讯公益”首页的页面,这是一道综合性的机试题,旨在考察学生对于前端开发技术的掌握程度。 首先,我们要理解HTML是网页的基础结构,CSS用于样式...

    VS2015安装证书,JavaScript_ProjectSystem.msi,JavaScript_LanguageService.msi

    在这个场景中,我们关注的是VS2015的安装过程中涉及到的证书问题以及两个特定的组件:JavaScript_ProjectSystem.msi和JavaScript_LanguageService.msi。 首先,关于“VS2015安装证书”,这通常是指安装过程中需要...

    .NET的Javascript运行库Javascript.Net

    这个项目对于那些需要在服务器端或者桌面应用中利用JavaScript的强大功能,而又不希望引入完整的浏览器环境(如ChakraCore或JScript.NET)的开发者来说,是一个非常实用的工具。 JavaScript.Net的核心功能在于提供...

    基于Java和JavaScript的试题库刷题系统设计源码

    该项目是一个基于Java和JavaScript的试题库刷题系统设计源码,包含41个文件,涵盖了14个文档文件(docx和doc格式)、10个Java源文件、2个JSP页面、2个JavaScript脚本、1个CSS样式表、1个Git忽略文件、1个属性文件和1...

    javaScript经典实例

    JavaScript,作为全球最广泛使用的编程语言之一,是创建交互式网页和动态应用的关键技术。它是一种轻量级的脚本语言,主要运行在浏览器环境中,但也适用于服务器端(如Node.js)和其他平台。"JavaScript经典实例"这...

    JavaScript学习指南 高清 PDF

    下面,我们将深入探讨JavaScript的一些关键知识点。 1. **基础语法**:JavaScript的基础包括变量、数据类型(如字符串、数字、布尔值、null、undefined)、操作符(算术、比较、逻辑)、流程控制(条件语句、循环...

    javascript试题集锦

    让基础学生 巩固 提炼 js技术 ,达到自己的新境界,同时可以训练自己js的知识体系

    JavaScript前端开发案例教程-源代码.rar

    对象则是一种数据结构,允许我们存储键值对,通过原型链机制,JavaScript实现了面向对象编程的一些特性。在压缩包中的案例可能涵盖了这些基本概念的实践应用。 其次,前端开发不仅限于JavaScript,还涉及到HTML和...

    javaScript api

    这个离线的JavaScript API CHM文件是一个宝贵的开发资源,它包含了大量的函数、方法、对象和类的详细文档,对于深入理解JavaScript的工作原理、提高开发效率非常有帮助。开发者可以在没有网络连接的情况下,快速查找...

    javascript试题(附答案)

    这份"javascript试题(附答案)"是为初学者设计的,旨在帮助他们更好地理解和掌握JavaScript的基础知识。 一、变量与数据类型 在JavaScript中,变量不需要预定义类型,可以动态改变。`var`关键字用于声明变量,例如`...

    JavaScript函数(源代码)

    JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)...

Global site tag (gtag.js) - Google Analytics