JavaScript试题:测试你真的掌握Javascript

文章简介:Dmitry Baranovskiy在自己的博客里出了五道测试题,测试一下大家是否真的懂JavaScript。

Dmitry Baranovskiy在自己的博客里出了五道测试题,测试一下大家是否真的懂JavaScript。题目如下

第一题

if (!("a" in window)) {
    var a = 1;
}
alert(a);

第二题

 var a = 1,
    b = function a(x) {
        x && a(--x);
    };
alert(a);

第三题

function a(x) {
    return x * 2;
}
var a;
alert(a);

第四题

 function b(x, y, a) {
    arguments[2] = 10;
    alert(a);
}
b(1, 2, 3);

第五题

 function a() {
    alert(this);
}
a.call(null);

第一题:答案undefined
js函数正式执行前会先处理函数声明、形参、变量声明(创建变量但是不赋值,赋值在代码执行阶段)。本例先在代码执行前处理变量声明,也就是解析器先弄一个变量a,但是没到函数执行呢,还不能给他赋值。所以有了变量a,注意是变量,全局变量相当于window的属性(其实不同,比如属性可以delete)所以”a” in window为true。
如果本题改为

 if (!("a" in window)) {
    a = 1;
}

将不会优先处理变量声明,结果会不同。
作为对比可以改为如下,同样根据上面的说明作答,大家自己试试。

第二题:答案1
只要记住一点,命名函数表达式的名字仅在所定义的函数内有效,由ecmascript作用域链的构建规则决定。

第三题:答案 是一个函数
按照第一题的解释中所说,先处理函数和声明和变量声明,所以a是一个函数,而var a不会改变赋值嘛,此后又没有赋值,所以a一直都是函数。

第四题:答案10
js每一个函数内都有一个隐含的arguments变量,是一个类数组结构,依次记录了参数的值,与参数同步更改。

第五题:答案window

没啥可说的,默认用window。

亲!都对了么?

时间: 2024-10-02 23:07:42

JavaScript试题:测试你真的掌握Javascript的相关文章

测试IE浏览器对JavaScript的AngularJS的兼容性

这篇文章主要介绍了测试IE浏览器对JavaScript的AngularJS的兼容性的方法,尽管随着Windows10的近期上市,IE浏览器即将成为历史...需要的朋友可以参考下 短版本 为确保Angular应用在IE上能够工作请确认:   1. 在IE7或更早的版本上polyfill JSON.stringify.你可以使用JSON2或JSON3来polyfills. ? 1 2 3 4 5 6 7 8 9 10 11 <!doctype html> <html xmlns:ng=&qu

你真的了解javascript中的null和undefined吗

这段时间一直在学习JavaScript,在学习数组的时候碰到这么一个问题. 给了一段代码: 书上解析: 但是我在测试的时候,发现week[0]~week[3]好像并没有被初始化为null.为了验证我的猜想,我做了以下一个例子: <html> <head> <title>编写JavaScript脚本</title> <script type="text/javascript" > var week = new Array();

Pro JavaScript Techniques第二章:面向对象的Javascript

对象是JavaScript的基本单位.实际上JavaScript中一切都是对象并得益于这一事实.然而,为了增强这一纯粹的面向对象的语言,JavaScript包括了一个庞大的功能集,使它无论是在潜在能力还是风格上,都成为一门极其独特的语言. 本章中我将开始覆盖JavaScript语言的最重要的一些方面,如引用,作用域,闭包,以及上下文,你会发现这正是其它JavaScript书籍中很少论及的.打下主要的基础以后,我们将开始探索面向对象JavaScript的几个重点,包括对象到底如何运作和怎样创建新的

《第三方JavaScript编程》——第1章 第三方JavaScript介绍 1.1 第三方JavaScript的定义

第1章 第三方JavaScript介绍 本章包括 第三方JavaScript的定义 几个第三方应用实例 实现一个简单的嵌入式微件 了解第三方开发的挑战 第三方JavaScript是一种JavaScript编程模式,可以用来创建高度分布式的Web应用程序.常规的Web应用需要通过一个特定的Web地址访问,而第三方JavaScript创建的应用,只需要引入一些简单的JavaScript脚本就可以加载到任意页面上. 你之前也许就曾遇到过第三方JavaScript.例如广告脚本,它可以在发布者网站上生成

《第三方JavaScript编程》——第1章 第三方JavaScript介绍1.1 第三方JavaScript的定义

第1章 第三方JavaScript介绍 本章包括 . 第三方JavaScript的定义 . 几个第三方应用实例 . 实现一个简单的嵌入式微件 . 了解第三方开发的挑战 第三方JavaScript是一种JavaScript编程模式,可以用来创建高度分布式的Web应用程序.常规的Web应用需要通过一个特定的Web地址访问,而第三方JavaScript创建的应用,只需要引入一些简单的JavaScript脚本就可以加载到任意页面上. 你之前也许就曾遇到过第三方JavaScript.例如广告脚本,它可以在

《JavaScript启示录》——第1章 JavaScript对象 1.1创建对象

第1章 JavaScript对象 1.1 创建对象 在JavaScript中,对象为"王":JavaScript里的几乎所有东西都是对象或者用起来像对象.理解了对象,就能够理解JavaScript.因此,让我们来查看一下JavaScript中的对象创建. 对象只是一组有命名值(也称为属性)集合的容器.在阅读JavaScript代码之前,让我们先来推理一下.以我自己为例,我们可以用简单的语言在表格中表达"cody": 上述表格中的"cody"一词只

JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解_javascript技巧

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什么,有什么用,今天在网上看到了一篇讲JavaScript闭包的文章(原文链接),讲得非常好,这下算是彻底明白了JavaScript的闭包到底是个神马东东以及闭包的用途了,在此写出来和大家分享一下,希望不理解JavaScript闭包的朋友们看了之后能够理解闭包!以下内容大部分是来自原文,我在原文的基础

javascript 学习笔记(八)javascript对象_基础知识

1.javascript中的内置对象 javascript中除了本身的内置对象,如以下我们所熟悉的对象: •Array •Date •Math •String •RegExp •-- 各个对象都有自己的属性及方法,比如我们经常使用属性及方法 属性:stringObject.length; arrayObject.length;-- 方法:stringObject.indexOf(); stringObject.splite(); stringObject.substr(); arrayObjec

JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js_javascript技巧

我一直对人工智能识别技术非常感兴趣,因为我无法想象这究竟是一种什么样的算法,什么样的分析过程.无论是声音识别.人脸识别或其它种识别,人们的外貌.说话的方式都是如此不同,一种图片你可以用不同的方式.从不同的角度拍摄,我不能理解这些识别技术是如何做到的.有个叫做"面具"的游戏也使用了这种识别技术,我想对于脸部识别技术也应该研究一下.Facebook使用了这种技术,在手势控制中也能用到它,所以,你网站上也会有应用的地方. 我找到的一个可以用于人脸识别的JavaScript程序包是Face D