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

01

1 (function () { 
2     return typeof arguments; 
3 })(); 
4 A. "object"
5 B. "array"
6 C. "arguments"
7 D. "undefined"

答案:A

02

1 var f = function g() {
2         return 23;
3     };
4 typeof g();
5 A. "number"
6 B. "undefined"
7 C. "function"
8 D. Eorror

答案:D

03

1 (function (x) {
2     delete x;
3     return x;
4 })(1);
5 A. 1
6 B. null
7 C. undefined
8 D. Error

答案:A

04

1 var y = 1,
2     x = y = typeof x;
3 x;
4 A. 1
5 B. "number"
6 C. undefined
7 D. "undefined"

答案: D

05

1 (function f(f) {
2     return typeof f();
3 })(function () {
4     return 1;
5 });
6 A. "number"
7 B. "undefined"
8 C. "function"
9 D. Error

答案:A

06

01 var foo = {
02     bar: function () {
03         return this.baz;
04     },
05     baz: 1
06 };
07 (function () {
08     return typeof arguments[0]();
09 })(foo.bar);
10 A. "undefined"
11 B. "object"
12 C. "number"
13 D. "function"

答案:A

07

01 var foo = {
02     bar: function () {
03         return this.baz;
04     },
05     baz: 1
06 };
07 typeof (f = foo.bar)();
08 A. "undefined"
09 B. "object"
10 C. "number"
11 D. "function"

答案:A

08

01 var f = (function f() {
02     return "1";
03 }, function g() {
04     return 2;
05 })();
06 typeof f;
07 A. "string"
08 B. "number"
09 C. "function"
10 D. "undefined"

答案: B

09

1 var x = 1;
2 if (function f() {}) {
3     x += typeof f;
4 }
5 x;
6 A. 1
7 B. "1function"
8 C. "1undefined"
9 D. NaN

答案: C

10

1 var x = [typeof x, typeof y][1];
2 typeof typeof x;
3 A. "number"
4 B. "string"
5 C. "undefined"
6 D. "object"

答案: B

11

01 (function (foo) {
02     return typeof foo.bar;
03 })({
04     foo: {
05         bar: 1
06     }
07 });
08 A、“undefined”
09 B、“object”
10 C、“number”
11 D、Error

答案: A

12

01 (function f() {
02     function f() {
03         return 1;
04     }
05     return f();
06     function f() {
07         return 2;
08     }
09 })();
10 A、1
11 B、2
12 C、Error (e.g. “Too much recursion”)
13 D、undefined

答案:B

13

1 function f() {
2     return f;
3 }
4 new f() instanceof f;
5 A、true
6 B、false

答案:B

14

1 with (function(x, undefined){}) length;
2 A、1
3 B、2
4 C、undefined
5 D、Error

答案:B

具体答案大家可以自己运行得出,为什么会得出这样的结果,我也有一些不懂的地方,怕误人子弟,所以这里就不解答这里的问题了。

一些奇怪的JavaScript试题的更多相关文章

  1. 一些奇怪的Javascript用法

    阅读AngularJS时,看到一些奇怪的Javascript用法.1.(function(){        a.work=function(){}   })(a)   声明一个匿名函数并执行 2. ...

  2. JAVASCRIPT试题及答案

    1.用jQuery编程实现获取选中复选框值的函数abc. <body> <input type="checkbox" name="aa" va ...

  3. 从零构建JavaScript的对象系统

    一.正统的类与继承 类是对象的定义,而对象是类的实例(Instance).类不可直接使用,要想使用就必须在内存上生成该类的副本,这个副本就是对象. 以Java为例: public class Grou ...

  4. JavaScript 调试常见报错以及修复方法

    (看到一篇调试JS很有用的文章,收藏一下) JavaScript 调试是一场噩梦:首先给出的错误非常难以理解,其次给出的行号不总有帮助.有个查找错误含义,及修复措施的列表,是不是很有用? 以下是奇怪的 ...

  5. 一个意想不到的Javascript内存泄漏

    原文:http://point.davidglasser.net/2013/06/27/surprising-javascript-memory-leak.html 本周我在Meter的同事追踪到了一 ...

  6. Javascript内存泄漏

    Javascript内存泄漏 原文:http://point.davidglasser.net/2013/06/27/surprising-javascript-memory-leak.html 本周 ...

  7. 关于JavaScript中的==与!的转换问题

    最近遇到了一道很有趣的JavaScript试题,感觉很有趣.记录一下免得以后面试遇到 题目是: console.log([]==![],{}==!{},[]==!{},{}==![]) 这道题考察的主 ...

  8. Ajax 的优势和不足

    Ajax 的优势 1. 不需要插件支持 Ajax 不需要任何浏览器插件,就可以被绝大多数主流浏览器所支持,用户只需要允许 JavaScript 在浏览器上执行即可. 2. 优秀的用户体验 这是 Aja ...

  9. 从 bootup.js 学习加载脚本等资源

    本文内容 如何使用 示例 参考资料 本文的目的在于,通过 bootup.js 的源代码,认识如何从客户端加载服务器的文件,特别是 JavaScript 文件,注入到页面,并存储在本地缓存,以扩展对 J ...

随机推荐

  1. 如何用Python做自动化特征工程

    机器学习的模型训练越来越自动化,但特征工程还是一个漫长的手动过程,依赖于专业的领域知识,直觉和数据处理.而特征选取恰恰是机器学习重要的先期步骤,虽然不如模型训练那样能产生直接可用的结果.本文作者将使用 ...

  2. hive自定义函数(UDF)

    首先什么是UDF,UDF的全称为user-defined function,用户定义函数,为什么有它的存在呢?有的时候 你要写的查询无法轻松地使用Hive提供的内置函数来表示,通过写UDF,Hive就 ...

  3. 齐博cms最新SQL注入网站漏洞 可远程执行代码提权

    齐博cms整站系统,是目前建站系统用的较多的一款CMS系统,开源,免费,第三方扩展化,界面可视化的操作,使用简单,便于新手使用和第二次开发,受到许多站长们的喜欢.开发架构使用的是php语言以及mysq ...

  4. 初识python 面向对象

    what the f**k!!这个知识点学不好的最大元凶就是,我还单身??? python基础(四): 面向对象的三个特点: 封装,继承,多态 类: 对象是面向对象编程的核心,在使用对象的过程中,为了 ...

  5. (数据科学学习手札16)K-modes聚类法的简介&Python与R的实现

    我们之前经常提起的K-means算法虽然比较经典,但其有不少的局限,为了改变K-means对异常值的敏感情况,我们介绍了K-medoids算法,而为了解决K-means只能处理数值型数据的情况,本篇便 ...

  6. R语言学习笔记(九):fivenum()与quantile()

    fivenum() fivenum(x, na.rm = TRUE) x 为数值型向量,可以包含NA以及Inf,-Inf na.rm = TRUE 默认将NA和NaN去除,但是Inf还保留. five ...

  7. 什么是Session共享?请举出使用场景

    是指在一个浏览器对应多个Web服务时,服务端的Session数据需要共享.例如单点登录.Web服务器集群等场景都需要用到.多子服务. Session共享有多种解决方案,例如Tomcat插件,我最喜欢的 ...

  8. WPF 构建无外观(Lookless)控件

    原文:WPF 构建无外观(Lookless)控件 构建一个用户可以使用Template属性设置外观的WPF控件需要以下几步 1.继承自System.Windows.Controls.Control 2 ...

  9. 为什么说Objective-C是一门动态的语言?

    object-c类的类型和数据变量的类型都是在运行是确定的,而不是在编译时确定.例如:多态特性,我们可以使用父类对象来指向子类对象,并且可以用来调用子类的方法.运行时(runtime)特性,我们可以动 ...

  10. ProxySQL读写分离测试(续)

      Preface       I've implemented ProxySQL on PXC yesterday but got some errors when configured query ...