1.参数集合是什么?

(function(){
return typeof arguments;
})();

的结果是?

typeOf只能以字符串的形式返回数据类型

js中包括6种数据类型——NumberStringBooleanObjectundefinednull

arguments是实参的集合——是一个对象(可以进行数组的循环,但没有数组的方法)。

所以答案是"Object"

2.函数表达式

var f=function g(){
return 23;
};
typeof g();

的结果是?

刚才说到typeOf只能返回六种数据类型,

f的声明是函数表达式。这种写法下,f是可以找到,但g不一定找得到。

所以会报错

3.delete方法删除什么?

(function(x){
delete x;
return x;
})(1);

的执行结果是?

delete方法只能删除对象的属性,所以x根本删不掉。

自执行的函数参数为1,所以返回1

4.连等赋值

var y=1,x=y=typeof x;
console.log(x);

执行结果是?

连等号的赋值过程是从右往左运算的。一开始x没有声明。那么x就是undefined,

接着x和y当然都也是undefined

运用typeof后,看到的结果是"undefined"。

5.函数还是参数?

console.log((function f(f){
return typeof f();
})(function(){return 1;}))

的执行结果是?

自执行函数返回的这个f()其实指的是是参数!所以结果是"number"

6.this的指向

var foo={
bar:function(){
return this.baz
},
baz:1
}; (function(){
return typeof arguments[0]();
})(foo.bar);

的执行结果是?

首先,这个foo对象定义有问题。作为方法,this指向的是调用者自身(这里是foo.bar),但是函数不存在baz这个属性,所以方法结果是undefined。

另一方面,和第四题类似,注意到arguments0就是一个函数自执行的结果,它已经从foo对象中剥离开来了,this指向arguments[0]

所以结果为"undefined"

扩展

上述条件不变

console.log(typeof (f=foo.bar)());

结果是?

显然,这个函数被剥离,this指向window,执行的结果是undefined

7.分组选择符

var f = (function f(){
return "1";
}, function g(){
return 2;
})(); typeof f;

的结果是?

好奇怪的写法!

这是分组选择符——选择的是变量最后一位。

var a=(1,2,3)
console.log(a)//3

所以结果是数字

8.判断语句的条件

  var x = 1;
if (function f(){}) {
x += typeof f;
}
x;

的结果是什么?

注意:函数声明不允许写在if判断条件中!如果真的写了,全部返回真——因为只有0,空字符串,undefined,null,false才判断为假。

结果返回undefined。而1+undefined自然是‘1undefined’

9. "类型"的类型

  var x = [typeof x, typeof y][1];
typeof typeof x;

遇到判断typeof判断typeof,肯定返回字符串

10.眼力

  (function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } });

的执行结果是?

完全是考眼力了。参数是一个对象,这个对象只有一个属性foo。

所以结果是undefined。

12. 函数声明的预解析

(function f(){
function f(){ return 1; }
return f();
function f(){ return 2; }
})();

的结果是?

首先要明确,函数声明是预解析的,在return之前,两句声明都已经被解析了。所以返回的是2。

13.构造函数的禁忌

return的f()值的是里面的f()还是外面的f()?

  function f(){ return f; }
new f() instanceof f;

的执行结果是?

instanceof返回的是一个布尔值。看他是不是构造函数的实例。

但是这个构造函数有很大的问题,构造函数在执行完毕之后,就变成了f值。所以不要给构造函数return东西。

14.函数的长度

  with (function(x, undefined){}) length;

这里是函数的长度。实际上是函数形参的长度。

javascript练习题·(1)的更多相关文章

  1. JavaScript 练习题

    练习题 1. 使用for循环输出1到50的值,要求每次循环只能输出一个值,每输出十个换一行. 2 日历生成器: 要求 用户输入,这个月有多少天,本月1号是星期几,自动生成日历 3. 表格生成器 4.  ...

  2. HTML——JAVASCRIPT练习题——图片轮播

    方法一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  3. JavaScript练习题 全局变量 局部变量 作用域

    前沿:大家好~我是阿飞~本次 任何简单的事情都可以复杂化,本次让我们来做下搞事情的练习题吧 例题1: var a = 1; function fn1(){ var a = 2; alert(a); / ...

  4. 3月25 JavaScript 练习题

    一个关于找7的题 <script type="text/javascript" language="javascript"> for(var i=1 ...

  5. 廖雪峰JavaScript练习题3

    请尝试写一个验证Email地址的正则表达式.版本一应该可以验证出类似的Email: 正则表达式: <!DOCTYPE html> <html> <head> < ...

  6. 廖雪峰JavaScript练习题2

    请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart'] 肯定有更简单的方法, ...

  7. 廖雪峰JavaScript练习题

    练习:不要使用JavaScript内置的parseInt()函 数,利用map和reduce操作实现一个string2int()函数: <!DOCTYPE html> <html&g ...

  8. javascript练习题

    function Vertex(city, x) { this.name = city; this.num = x; } var node0 = new Vertex("邯郸", ...

  9. <JavaScript>几道javascript练习题

    问题1: 作用域(Scope) 考虑以下代码: (function() { var a = b = 5; })(); console.log(b); 控制台(console)会打印出什么? 答案 上述 ...

  10. javascript练习题(3):基础字符串运算

    用两种方法实现下列问题! 1. 把一个字符串转化为驼峰写法 需求:margin-left=>marginLeft 思路一:split 把它转化为一个数组然后修改内容 function conve ...

随机推荐

  1. HTML Colors

    https://www.w3schools.com/html/html_colors.asp <!DOCTYPE html> <html> <body> #169f ...

  2. MyBatis generator 生成生成dao model mappper

    MyBatis GeneratorXML配置文件参考 在最常见的用例中,MyBatis Generator(MBG)由XML配置文件驱动. 配置文件告诉MBG: 如何连接到数据库 什么对象要生成,以及 ...

  3. MySQL数据库(4)- 多表查询、可视化工具Navicat的使用、设计模式MVC

    一.多表查询 准备工作:创建两张表,部门表(department).员工表(employee),代码和表格如下: # 创建表 create table department( id int, name ...

  4. web 开发常见问题--Session 与 Cookie 却别

    总结: 1.首先,session与cookie都是保存数据的,存在的原因很大程度上是为了解决HTTP协议的无状态特性 2.都是保存数据,却别在于cookie保存在客户端,由浏览器管理,session保 ...

  5. oracle入门(4)——少而常用的命令

    [本文介绍] 本文将介绍使用oracle的常用命令,不是”大全“,但少而实用. 下面的命令都是在项目用到的才记录下来的,如果以后用到其他的,会不断更新. [命令介绍] 描述: 命令: [数据库]   ...

  6. django安装与卸载

    安装 D:\Django-1.8.2>python setup.py installrunning install Installed d:\python27\lib\site-packages ...

  7. Linux Shell编程第2章——Linux文件系统

    目录 用户和用户组管理 用户管理常用命令 用户组管理常用命令 文件和目录操作 文件操作常用命令 目录操作常用命令 文件和目录权限管理 文件查找--find 用户和用户组管理 用户管理常用命令 用户的角 ...

  8. PAT 天梯赛 L1-016. 查验身份证 【水】

    题目链接 https://www.patest.cn/contests/gplt/L1-016 AC代码 #include <iostream> #include <cstdio&g ...

  9. return false 和 return true

    常规用法 在普通函数中:return 语句终止函数的执行,并返回一个指定的值给函数调用者,一般会用一个变量接收这个返回值再进行其它处理.如果未指定返回值,则返回 undefined 其中,返回一个函数 ...

  10. python中命令行参数

    python中的命令行参数 python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 le ...