Question1

  1. var foo = function foo() {
  2. console.log(foo === foo);
  3. };
  4. foo();

输出是“true”,因为foo就指代变量foo,两个是相等的。如果改成这样同样成立:

  1. var foo = function() {
  2. console.log(foo === foo);
  3. };
  4. foo();

Question2

  1. function aaa() {
  2. return
  3. {
  4. test: 1
  5. };
  6. }
  7. alert(typeof aaa());

此题初看返回是一个object,但是注意return后面有一个换行,因此程序会如下执行:

  1. function aaa() {
  2. return
  3. {
  4. test: 1
  5. };
  6. }
  7. alert(typeof aaa());

返回值是undefined。

Question3

  1. Number("1") - 1 == 0;

Number函数可以将非数值转换为数值,Number("1")为1,所以正确。

Question4

  1. (true + false) > 2 + true;

"+"运算符会将值自动转换为number,

  1. true + false = 1

然后变为

  1. 1 > 2 + true

“+”优先级大于“>”

  1. 1 > 3

因此答案为false。

Question5

  1. function bar() {
  2. return foo;
  3. foo = 10;
  4. function foo() {}
  5. var foo = '11';
  6. }
  7. alert(typeof bar());

函数声明会被提前,因此执行顺序如下:

  1. function bar() {
  2. function foo() {}
  3. return foo;
  4. foo = 10;
  5. var foo = '11';
  6. }
  7. alert(typeof bar());

所以返回的function类型。

Question6

  1. "1" - - "1";

等价于1 - (-1),所以为2.

Question7

  1. var x = 3;
  2. var foo = {
  3. x: 2,
  4. baz: {
  5. x: 1,
  6. bar: function() {
  7. return this.x;
  8. }
  9. }
  10. }
  11. var go = foo.baz.bar;
  12. alert(go());
  13. alert(foo.baz.bar());

答案是3,1.this指向函数所属的对象。

Question8

  1. new String("This is a string") instanceof String;

3个特殊的引用类型,String,Boolean,Number

Question9

  1. [] + [] + 'foo'.split('');

"+"用在数组上时候,空数组转换为空字符串,非空数组转换为逗号分隔的字符串。

  1. "" + "" + "f,o,o" = "f,o,o"

Question10

  1. new Array(5).toString();

数组转换为字符串,undefined转换为空字符串,答案是:",,,,"

Question11

  1. var myArr = ['foo', 'bar', 'baz'];
  2. myArr.length = 0;
  3. myArr.push('bin');
  4. console.log(myArr);

['bin']

Question12

  1. String('Hello') === 'Hello';

注意是String函数而不是new String ,所以结果为true

Question13

  1. var x = 0;
  2. function foo() {
  3. x++;
  4. this.x = x;
  5. return foo;
  6. }
  7. var bar = new new foo;
  8. console.log(bar.x);

这个写错了,不是很确定,应该是返回的都是foo是函数,函数是没有x这个属性的。返回undefined,不知对不对。

Question14

  1. "This is a string" instanceof String;

字符串只是基本数据类型,不是对象,也不可能是任何对象实例,结果为 false

Question15

  1. var bar = 1,
  2. foo = {};
  3. foo: {
  4. bar: 2;
  5. baz: ++bar;
  6. };
  7. foo.baz + foo.bar + bar;

foo:{}这种语法在js中称为labeled声明,对于前面定义的空对象foo并没有任何卵影响,所以foo.bar,foo.baz都等于undefined,“+”将其转换为NaN,任何数据加NaN都会返回NaN,所以答案是NaN。

Question16

  1. var myArr = ['foo', 'bar', 'baz'];
  2. myArr[2];
  3. console.log('2' in myArr);

in操作在js中是检测某个属性是否存在于对象中,数组的长度是3,有0,1,2的numeric属性,返回true。

Question17

  1. var arr = [];
  2. arr[0] = 'a';
  3. arr[1] = 'b';
  4. arr.foo = 'c';
  5. alert(arr.length);

数组的长度仅受numeric属性的影响。返回2.

Question18

  1. 10 > 9 > 8 === true;

解析:

  1. ((10 > 9) > 8) === true;
  2. (true > 8) === true;
  3. (1 > 8) === true;
  4. false === true;
  5. false;

Question19

  1. function foo(a, b) {
  2. arguments[1] = 2;
  3. alert(b);
  4. }
  5. foo(1);

argunments对象仅仅包含传入foo的参数。返回undefined

Question20

  1. NaN === NaN

NaN不与任何值相等,包括NaN本身。注意typeof NaN 返回“number”

参考资料

reddit

[js测试]JavaScript Web Quiz By davidshariff的更多相关文章

  1. 了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)

    了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发) Guillermo Rauch 编   赵静 译 ISBN 978-7-121-21769-2 2 ...

  2. Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) based on Node.js / server-side JavaScript? - Quora

    Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) ba ...

  3. [转] 国内外最全面和主流的JS框架与WEB UI库(强烈推荐)

    国内外最全面和主流的JS框架与WEB UI库...   当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同 ...

  4. 国内外最全面和主流的JS框架与WEB UI库

    当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同浏览器的兼容性也不需要程序员操心,有了这些优点,当然大家 ...

  5. 通过Jasmine和Guard自动测试JavaScript

    原文标题:Autotesting JavaScript with Jasmine and Guard 原文地址:http://edspencer.net/2013/06/15/autotesting- ...

  6. OS.js – 开源的 Web OS 系统,赶快来体验

    OS.js 是一个开源的 Web OS 系统,可以在浏览器中运行,提供了窗口管理器,应用程序API,用户界面开发套件和抽象的文件系统等.可以部署在 Node 或者 PHP 环境中运行.OS.js is ...

  7. Rainyday.js – 使用 JavaScript 实现雨滴效果

    Rainyday.js 背后的想法是创建一个 JavaScript 库,利用 HTML5 Canvas 渲染一个雨滴落在玻璃表面的动画.Rainyday.js 有功能可扩展的 API,例如碰撞检测和易 ...

  8. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

  9. 使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍

      使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍 使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍 来自译者 markzhai:大家也知道最近 ...

随机推荐

  1. HTML基础 有序列表写个人收藏夹

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. java 字符串常量池

  3. 十分钟理解Redux核心思想,过目不忘。

    白话Redux工作原理.浅显易懂. 如有纰漏或疑问,欢迎交流. Redux 约法三章 唯一数据源(state) 虽然redux中的state与react没有联系,但可以简单理解为react组件中的th ...

  4. Autoit3 自动添加打印机

    从网上找的代码进行了修改!! 其原理1\用注册表添加端口,2\重启打印服务 ,3最后使用"rundll32 printui.dll"命令进行添加打印机 如下: #RequireAd ...

  5. JAVA学习笔记--赋值(“=”)

    参考来源:<java编程思想(第四版)> 见第三章3.4节 基本数据类型存储了实际的数值,并非指向一个对象的引用,故其赋值,就是直接将一个地方的内容复制到了另一个地方.例如,对基本数据类型 ...

  6. boost propertyTree

    Boost PropertyTree provides a tree structure to store key/value pairs. Tree structures means that a ...

  7. 神秘的java Https

    说起网络安全,最基本的策略就是走https.https仿佛一条神秘通道,有了它,万事无忧. 究竟什么是https?如何实现https? 本文将揭开https的神秘面纱. WTF https 万事皆有源 ...

  8. SQL学习记录:函数(二)

    字符串函数 1.获取字符的ASCII码 语法结构: ASCII(espression)    这里的expression是一个返回char或varchar数据类型的表达式,ASCII函数仅对表达式最左 ...

  9. Openstack API 类型 & REST 风格

    目录 目录 Openstack 提供了三种操作方式 Web界面 CIL 指令行 RESTful API REST 风格 RESTFul风格的API设计 基于HTTP协议的RESTful API Ope ...

  10. Python 进阶_OOP 面向对象编程_组合与继承

    #目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...