`
gonnsai
  • 浏览: 8432 次
  • 性别: 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试题
分享到:
评论
39 楼 jordan_micle 2011-06-30  
soni 写道
这么写容易被打死


确实蛋疼。。。离开JS,可以延长你的寿命。
38 楼 xingqiliudehuanghun 2011-06-30  
他想考察的是1.toString()会报错,但1之后加一个空格就可以了,所以最后的-1_.toString()//_指空格就可以了
37 楼 int08h 2011-06-29  
xingqiliudehuanghun 写道
昨天去面试也遇到了一个,请输出下面程序的执行结果:
1.toString();
(1).toString();
-1 .toString();

1.toString()过不了语法,-1 .toString()是-(1 .toString())
36 楼 xingqiliudehuanghun 2011-06-29  
昨天去面试也遇到了一个,请输出下面程序的执行结果:
1.toString();
(1).toString();
-1 .toString();
35 楼 haiyupeter 2011-06-27  
这个明显是在测试javascript的typeof,没啥特别的。。
34 楼 int08h 2011-06-24  
super_monkey 写道
int08h 写道
super_monkey 写道
不对呀,呵呵.主要是后三个log 

我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货?


呵呵,其实就是考考eval在不同的执行环境中变量的作用域问题,name: 会放在全局(window),age 和 password会放在他们执行的function范围.这样好处就很明显了,不污染全局。所以后面的3个log应为 number undefined undefined

嗯,不过如果是浏览器环境下的话,window自带name这属性且有特殊处理,name永远是string……
33 楼 super_monkey 2011-06-24  
int08h 写道
super_monkey 写道
不对呀,呵呵.主要是后三个log 

我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货?


呵呵,其实就是考考eval在不同的执行环境中变量的作用域问题,name: 会放在全局(window),age 和 password会放在他们执行的function范围.这样好处就很明显了,不污染全局。所以后面的3个log应为 number undefined undefined
32 楼 int08h 2011-06-24  
super_monkey 写道
不对呀,呵呵.主要是后三个log 

我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货?
31 楼 super_monkey 2011-06-24  
不对呀,呵呵.主要是后三个log 
30 楼 zhanghh321 2011-06-24  
super_monkey 写道
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); 



应该是undefined
undefined
undefined
number
number
number

对否啊
29 楼 taoge2121 2011-06-24  
第二个,IE运行是number,FF运行是g is not defined

var f = function g() {  
        return 23;  
    };  
alert(typeof g());
为什么啊????
28 楼 yf7631497 2011-06-24  
yf7631497 写道
int08h 写道
clue 写道
int08h 写道

这算啥,Firefox有更恶心的
if (0) {
    function abc() {
        
    }
}
abc();

我发的那段代码,在IE下第一个alert弹出的是false 

IE的具名函数表达式有2次Evaluate过程,这个在2000年前讨论得比较激烈,现在大家忘得差不多了……



威武



有没有这个板块?
浏览器 N种罪
27 楼 yf7631497 2011-06-24  
int08h 写道
clue 写道
int08h 写道

这算啥,Firefox有更恶心的
if (0) {
    function abc() {
        
    }
}
abc();

我发的那段代码,在IE下第一个alert弹出的是false 

IE的具名函数表达式有2次Evaluate过程,这个在2000年前讨论得比较激烈,现在大家忘得差不多了……



威武
26 楼 咖啡豆子 2011-06-23  
这些题都没什么意义,这么写严重恶化了代码质量
25 楼 gaoshouzhen1987 2011-06-23  
写这样代码的人,应该开除掉
24 楼 int08h 2011-06-23  
abraham_xi 写道
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

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


对于第二题IE下面能运行成功,上面对于第二题的解释还正确吗??


IE那是他的实现错误,说严重点就是IE的BUG……因为根据ECMA262的标准而言,我的解释是正确的,当然如果考虑各浏览器下的表现行为,我的答案需要有一些改动……
23 楼 abraham_xi 2011-06-23  
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

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


对于第二题IE下面能运行成功,上面对于第二题的解释还正确吗??
22 楼 shuaiji 2011-06-23  
明明是抄错了啦吧,我看上面有个 3 和 4 是不一样的
21 楼 int08h 2011-06-23  
clue 写道
int08h 写道

这算啥,Firefox有更恶心的
if (0) {
    function abc() {
        
    }
}
abc();

我发的那段代码,在IE下第一个alert弹出的是false 

IE的具名函数表达式有2次Evaluate过程,这个在2000年前讨论得比较激烈,现在大家忘得差不多了……
20 楼 clue 2011-06-23  
int08h 写道

这算啥,Firefox有更恶心的
if (0) {
    function abc() {
        
    }
}
abc();

我发的那段代码,在IE下第一个alert弹出的是false 

相关推荐

    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的核心功能在于提供...

    JavaScript基础语法(ppt)

    JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)...

    基于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试题集锦

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

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

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

    javaScript api

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

    javascript拼图游戏(试题,javascript代码)

    最后,为了提高用户体验,我们可能还需要实现一些辅助功能,比如计时器来记录完成时间,或者提供提示和重置选项。这需要用到`setInterval`和`clearInterval`来控制定时任务,以及更多的事件监听和处理。 总之,通过...

    [JavaScript权威指南(第6版)]

    《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...

    JavaScript函数(源代码)

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

    JavaScript课堂习题答案

    JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案...

Global site tag (gtag.js) - Google Analytics