`
gonnsai
  • 浏览: 8582 次
  • 性别: 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试题(附答案)

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

    javascript 试题及答案

    JavaScript试题及答案解读 本文将对JavaScript试题及答案进行解读,涵盖了JavaScript基础知识、语法格式、变量声明、运算符、_comparison operators、逻辑运算符、赋值语句等多方面的知识点。 JavaScript基础知识 ...

    浅析网络程序员考试中的JavaScript试题.pdf

    另一类是考查应用JavaScript脚本语言来实现一些特殊效果,如实现状态栏上的跑马灯效果、实现滚动广告条的效果等。 二、试题分析 2002年网络程序员下午卷试题四主要考查了定义对象构造函数、定义对象方法、以及建立...

    javascript试题(Javascriptquestions)PDF

    但我可以根据给出的描述和标签,提供一些与JavaScript相关的常见知识点,这些知识点可能在一份JavaScript试题(Javascriptquestions)PDF中出现。 JavaScript是一种高级的、解释执行的编程语言。它让网页具有交互性...

    javascript试题及答案.docx

    JavaScript 试题及答案 本文档提供了 JavaScript 相关试题及答案,涵盖了 JavaScript 的基础知识点,包括函数、对象、事件处理程序、文本框、按钮、单选框、下拉框、表单验证、JavaScript 中的时间和日期等知识点。...

    JavaScript 进阶问题列表,包含完整答案

    《JavaScript进阶问题列表》是一份全面覆盖JavaScript高级知识点的问题集合,旨在帮助开发者深入理解JavaScript语言的各个方面,并掌握进阶技巧。每个问题都提供了详细的答案和解析,涵盖了JavaScript的高级特性、...

    一些常用的JavaScript代码

    一些常用的JavaScript代码,全是我工作中的总结

    深入理解JavaScript系列

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

    JavaScript标准参考教程

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

    非常实用的JavaScript全套帮助文档

    在“常用的源码收集”这一标签下,我们可以期待这个压缩包中可能包含了一些常见的JavaScript代码片段和库,比如用于AJAX请求的jQuery、用于动画效果的GreenSock或者用于前端框架的React、Vue等。这些源码不仅可以...

    JavaScript语言精粹完整版

    《JavaScript语言精粹》作为一本深入浅出讲解JavaScript编程语言的经典之作,对于想要提升自己JavaScript技能的开发者来说,无疑是一份宝贵的资源。本书由Douglas Crockford所著,他不仅是JSON格式的创始人,也是...

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

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

    JavaScript文档

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

    《你不知道的JavaScript》.pdf

    JavaScript作为一种动态类型语言,其变量的类型在运行时才确定,这种灵活性有时也会带来一些意料之外的结果。书中对这些情况进行了阐释,比如在JavaScript中使用加减乘除等运算符时,不同类型的数据是如何相互转换的...

    javascript模拟试题.doc

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

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

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

    JavaScript全栈教程 (廖雪峰) 完整版PDF

    JavaScript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数 基于HTML5的手机App,交互逻辑都是由...从基础入门在讲到node使用实践,感兴趣的可以下载学习,离线文件非常方面。

    JavaScript面试试题集合.rar

    目前,JavaScript已经成为最流行的编程语言之一,被广泛应用于前端开发、后端开发、移动应用开发以及一系列其他领域。 JavaScript的快速发展得益于它的灵活性、易学性和强大的生态系统。它不仅可以通过浏览器执行,...

    JavaScript学习指南 高清 PDF

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

    .NET的Javascript运行库Javascript.Net

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

Global site tag (gtag.js) - Google Analytics